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

Как да използвам $slice a $filter резултат в MongoDB?

Един от начините да го направите би бил този (няма нужда от етап $match в зависимост от структурата на вашите данни и настройката ви за индексиране, но все пак може да искате да го запазите от съображения за ефективност):

 db.item.aggregate([
    { "$project": { 
        "items": { 
            "$slice": [ 
                { "$filter": { 
                    "input": "$items",
                    "as": "item", 
                    "cond": { "$eq": [ "$$item.status", "active" ] } 
                }}, 
                -3,2 
            ] 
        } 
    }}
])

Мисля обаче, че вероятно е по-добре да използвате следната заявка:

db.items.db.aggregate([
{
    $project: {
        "items": {
            "$filter": { 
                "input": "$items",
                "as": "item", 
                "cond": { "$eq": [ "$$item.status", "active" ] } 
            }
        } 
    }
}, {
    $project: {
        "items": {
            $slice: [
                {
                    $slice: [
                        "$items",
                        {
                            $subtract: [ { $size: "$items" }, 1 ] // length of items array minus one
                        } 
                    ]
                }, 2 // max two elements
            ]
        }
    }
}])

тъй като този първо ще се отърве от последния елемент и след това ще ограничи изхода до два елемента, което вероятно е повече от това, което искате в ситуация с по-малко от 3 "активни" елемента.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изглежда, че когато направя fs.writeFile(), промененият файл рестартира nodemon. Как да не се рестартира?

  2. Големи работни потоци от данни с помощта на панди

  3. Последователно итериране на курсора mongodb (изчакване на обратни извиквания, преди да преминете към следващия документ)

  4. Как да видите вашата версия за съвместимост на функциите в MongoDB

  5. Изместване на множество записи с MongoDb