MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zapytanie o podobną tablicę w MongoDB

Dzięki wszystkim, którzy próbowali mi pomóc. Doceniam twoją pomoc.

Znalazłem rozwiązanie za pośrednictwem potoku agregacji.

var myArray = ['a', 'b', 'c'];

db.test.aggregate([
    {
        $unwind: '$chars',
    },
    {
        $match: { chars: { $in: myArray } },
    },
    {
        $group: {
            _id: '$_id',
            count: { $sum: 1 },
        },
    },
    {
        $project: {
            _id: 1,
            count: 1,
            score: { $divide: ['$count', myArray.length] },
        },
    },
    {
        $sort: { score: -1 },
    },
]);

Oto, co daje konsola:

{ "_id" : ObjectId("586ebeacb2ec9fc7fef5ce31"), "count" : 3, "score" : 1 }
{ "_id" : ObjectId("586ebeb9b2ec9fc7fef5ce32"), "count" : 2, "score" : 0.6666666666666666 }
{ "_id" : ObjectId("586ebe89b2ec9fc7fef5ce2f"), "count" : 1, "score" : 0.3333333333333333 }

Mam nadzieję, że ktoś uzna to za przydatne.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoid nazwany zakres porównujący dwa pola czasu w tym samym dokumencie

  2. findAll kończy się niepowodzeniem po ponownej inicjalizacji morfii odtwarzania

  3. mongoDB:Pokaż MinuteBucket w czasie jako czas zakończenia interwału

  4. Zduplikowane dokumenty na _id (w mongo)

  5. Jak obsługiwać wywołania zwrotne w pętli for (Node.JS)