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

Struktura agregacji mongodb — pobierz pole pierwszego dokumentu z zagnieżdżonej tablicy

Najłatwiejszym sposobem uzyskania wyniku jest użycie normalnego zapytania wyszukiwania i $slice operator:

db.collection.find( {_id: "User1"}, {"likes.sublikes": {$slice: 1}} )

Struktura agregacji (jak w MongoDB 2.4.1) nie obsługuje $slice lub indeksy tablicowe (głosuj/obserwuj żądania funkcji:SERVER-6074 i SERVER-4589 ).

Możesz to zrobić w ramach agregacji za pomocą $unwind , $group i $first operator, np.:

db.collection.aggregate([
    { $match: {
         _id : "User1"
    }},
    { $unwind: "$likes.sublikes" },
    { $group: {
        _id: "$_id",
        like: { $first: "$likes.sublikes" }
    }},
    { $project: {
        _id: 0,
        "UserID": "$_id",
        "WebsiteName": "$like.WebsiteName"
    }}
])

Normalny $slice powinna być najbardziej wydajną opcją.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyszukiwanie geoprzestrzenne Mongoose:odległość nie działa

  2. Serwer Mongo akceptuje dane uwierzytelniające z powłoki, ale nie z interfejsu Java/Scala

  3. Usuń klucz z dokumentu MongoDB za pomocą Mongoose

  4. Jak modelować przy użyciu Spring data mongo i Spring data elasticearch?

  5. Jak Trello przechowuje dane w MongoDB? (Zbiór na tablicę?)