我对mongo相当新,虽然我可以设法用$ in,$或$ all进行大多数基本操作,但我无法做出我想要的工作。
我基本上会提出一个简单的问题形式。我的部分文件是编号清单,例如:
{_id:1,list:[1,4,3,2]}
{_id:2,list:[1]}
{_id:3,list:[1,3,4,6]}
我想要一个给出列表的查询(让我们称之为L),将返回我的整个列表在L中的每个文档
例如使用给定列表L = [1,2,3,4,5]我想要返回带有_id 1和2的文档。自从6岁以来没有回来3。
" $在"不起作用,因为它也会返回_id 3和" $ all"不起作用,因为它只会返回_id 1。
然后我想到" $ where"但我似乎无法找到如何将外部变量绑定到js代码。我所说的就是:例如:
var L = [1,2,3,4,5];
db.collections('myCollection').find({$where:function(l){
// return something with the list "l" there
}.bind(null,list)})
我尝试将列表绑定到函数中,但是没有用... 我非常感谢任何关于这个问题的暗示,谢谢。
答案 0 :(得分:0)
对于此方案,存在与Check if every element in array matches condition相关的问题an answer with a nice approach。它指的是一系列嵌入式文档,但可以根据您的情况进行调整:
db.list.find({
"list" : { $not : { $elemMatch : { $nin : [1,2,3,4,5] } } },
"list.0" : { $exists: true }
})
即。列表中不得包含任何不在[1,2,3,4,5]中的元素,且列表必须至少包含1个元素(假设这也是一个要求)。