MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

рамка за агрегиране на mongodb - Извлича полето на първия документ от вложения масив

Най-лесният начин да постигнете резултата си е да използвате нормална заявка за намиране и $slice оператор:

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

Рамката за агрегиране (както при MongoDB 2.4.1) не поддържа $slice или масивни индекси (заявки за функции за гласуване/гледане:SERVER-6074 и SERVER-4589 ).

Можете да направите това в рамка за агрегиране, като използвате $unwind , $group и $first оператор, например:

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

Нормалният $slice трябва да е най-производителната опция.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да накарам Spring-Data-MongoDB да валидира моите обекти?

  2. Групирайте записи по месеци и ги пребройте - Mongoose, nodeJs, mongoDb

  3. MongoDB регулярен израз с индексирано поле

  4. Намерете записи на MongoDB, където полето на масива не е празно

  5. MongoDB:едновременни ли са четенията/записите в базата данни?