2015-07-08 2 views
-2

Это мой документ в MongoDB, и мне нужно, чтобы ограничить вывод:предельные записи в MongoDB запросе

{ 
    "_id": ObjectId("55880fb8c3addd201ee2f70e"), 
    "title": "Sales", 
    "level1": [{ 
    "name": "Master", 
    "link": "/sales/master" 
    }, { 
    "name": "eCommerce", 
    "link": "/sales/ecommerce" 
    }] 
} 

Мой поисковый запрос является:

db.collection.find({ 
    title: "Sales", 
    "level1.name": "Master" 
}, { 
    "title": 1, 
    "level1.name": 1, 
    "level1.name": "Master" 
}) 

Это ожидаемый результат:

{ 
    "_id": ObjectId("55880fb8c3addd201ee2f70e"), 
    "title": "Sales", 
    "level1": [{ 
    "name": "Master", 
    "link": "/sales/master" 
    }] 
} 

ответ

0

Вы можете использовать aggregation по $unwindlevel1 массива, чтобы получить ожидаемый результат, как следующее:

db.collection.aggregate({$unwind:"$level1"},{$match:{"level1.name":"Master","title" :"Sales"}}) 

Если вы хотите, чтобы все под один массив можно сгруппировать это нравится:

db.collection.aggregate({$unwind:"$level1"},{$match:{"title" :"Sales","level1.name":"Master"}},{$group:{_id:"_id","title":{$first:"$title"},"level1":{$push:"$level1"}}}) 
+0

спасибо, приятель ... это сработало :) –

0

Пожалуйста, попробуйте нижеследующий запрос:

db.collection.find({title :"Sales", 
        level1: {$elematch: {name" : "Master"}}}, 
        {title : 1, level1.$ : 1}); 
+0

db.collection. find ({"title": "Sales", "level1": {"$ elemMatch": {"name": {$ in: ["Master", "eCommerce"]}}}}, {"level1. $ name ": 1," title ": 1}) ... Как искать n no.of $ elematch –

+0

@AlnoorKhan Вопрос задавался много раз раньше. Посмотрите на связанный дублированный ответ на есть ** все ** ваши ответы. –

Смежные вопросы