Скажем, у меня был документ MongoDB с 2 встроенными документами, хранящимися в массиве «AD». Каждый из этих встроенных документов будет иметь конкретные данные, которые мне нужно сопоставить. Как написать запрос, чтобы найти этот документ?
В драйвере C# В настоящее время я пишу это так:
var q1 = Query.And(
Query.EQ("AD.ABC1", "123"),
Query.EQ("AD.YOB", "1969")
);
var q2 = Query.And(
Query.EQ("AD.ABC1", "456"),
Query.EQ("AD.YON", "1970")
);
var query = Query.And(q1, q2);
Что дает мне запрос о:
{
"$and": [
{
"AD.ABC1": "123"
},
{
"AD.YOB": "1969"
},
{
"AD.ABC1": "456"
},
{
"AD.YON": "1970"
}
]
}
Это возвращает документы, которые имеют встроенные документы, которые соответствуют ЯВНО q1 или q2. Я хочу пересечение этого - то есть документы, которые имеют встроенные документы, соответствующие BOTH q1 AND q2.
Благодаря
Посмотрите на [** '$ elemMatch' **] (http://docs.mongodb.org/ручной/справочник/оператор/запрос/elemMatch /). И здесь есть ответы на это. –
Да, я посмотрел на страницу elemMatch и здесь, но никто не заходил в запрос документов, у которых было все несколько вложенных вложенных документов, если вы знаете, что я имею в виду. Во всяком случае, я попал туда, в конце концов ... – millarnui