【问题标题】:Querying for array in embedded list查询嵌入列表中的数组
【发布时间】:2016-07-26 04:37:37
【问题描述】:

假设我有一个类似于以下内容的 mongo 文档:

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

(是的,我知道这不是它“真正”的样子,但它应该足够简单,便于解释。)

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

我可以做类似的事情

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

【问题讨论】:

    标签: python mongodb mongodb-query pymongo


    【解决方案1】:
    collection.find({ 'listsOfLists': [3,4] }).
    

    这只是属性上的“直接匹配”。 MongoDB 将自动查看每个数组元素。这里不需要$elemMatch

    如果你要使用它,你需要一个运算符表达式,例如$eq:

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

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

    【讨论】:

    • 所以,在相关项目中。我可以使用 $elemMatch 来检查列表中的第一个元素是否与查询匹配?像 { '$elemMatch' : { '$eq' : 3} }
    • @K.Niemczyk 这实际上是Another Question to Ask,但它的答案是合乎逻辑的。如果您无法解决,请在此处发布另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    相关资源
    最近更新 更多