2016-04-06 83 views
1

假设我有一个蒙戈文件看起来类似于以下内容:嵌入式列表查询阵列

{ 
    'foo':1 
    'listOfLists' : [ [1,2],[3,4] ] 
} 

(是的,我知道这是不是如何“真正”的外貌,但它应该是足够简单)

如果我想编写一个查询来检查listOfLists列表对象是否包含[3,4]的组合,那么我该怎么做呢?

我可以做类似

collection.find({'listsOfLists' : {'$elemMatch' : [3,4] } }) 

回答

1
collection.find({ 'listsOfLists': [3,4] }). 

这只是对物业 “直接匹配”。 MongoDB会自动查看每个数组元素。您在这里不需要$elemMatch

如果你要使用它,你需要一个操作符表达式,如$eq

collection.find({ 'listsOfLists': { '$elemMatch': { '$eq': [3,4] } } }). 

但是,这当然不是必需的,除非有“两个或两个以上”的条件实际上需要匹配数组元素。这是$elemMatch实际上的用途。

+0

所以,在一个相关的项目。我可以使用$ elemMatch来检查列表中的第一个元素是否与查询匹配吗?就像{'$ elemMatch':{'$ eq':3}} –

+0

@ K.Niemczyk这实际上是[另一个问题要问](http://stackoverflow.com/questions/ask),但它是一个有一个合理的答案。如果你不能解决问题,请在这里发布另一个问题。 –