2015-02-26 4 views
-2

У меня есть следующий Монго структуру документа

"search": [ 
    [ 
     "keyword", 
     "match" 
    ], 
    [ 
     "testing", 
     "something", 
     "serious" 
    ] 
] 

Я хочу, чтобы найти документы, где массив ключевых слов внутри массива соответствует в $all запросе.

если например поиск был только один уровень, я бы

{'search': {'$all': ['keyword','match']}} 

Я попытался с помощью:

{'search': {'$elemMatch': {'$all': ['keyword','match']}}} 

Но я не получаю никаких результатов.

+0

Что такое запрос $ all? – Halfstop

+0

Вам удалось решить проблему, с которой вы столкнулись? –

+0

@JuanCarlosFarah Нет, боюсь нет. –

ответ

0

Если вы знаете массив ключевых слов заранее и хотите совместить документ, содержащий этот массив внутри массива search, вы можете просто использовать простой запрос следующим образом.

db.collection.find({"search": ["keyword", "match"]}); 

Это должно вернуть образец документа. С другой стороны, если массив не полностью содержится элементом внутри search, он ничего не вернет. Например, следующий запрос не вернет ваш образец документа.

db.collection.find({"search": ["keyword", "match", "testing"]}); 
+0

Это не работает для моего использования. Я использую $ all, чтобы использовать второй пример. –

+0

Думаю, я не очень понимаю, с какими проблемами вы сталкиваетесь. Вы хотите, чтобы документ соответствовал, если массив, который он содержит, является подмножеством массива, который вы ему даете? Или наоборот? –

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