【问题标题】:how to do this query in mongoDB?如何在 mongoDB 中进行此查询?
【发布时间】:2012-06-26 01:58:52
【问题描述】:

如何在 mongoDB 中进行此查询?

{

_id: "*******"

内容:“”,

cmets: [

{

key1: "1",

key2:“2”

},

{

key1: "sdfs",

key2:“sdfasdf”

}

]

}

例如,我使用如下数据。我想查询条件 {key1: 1, key2: 2} 的 cmets 中的项目,而不是返回整条记录。

我该怎么办?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    你可以试试这个

    { "comments.key1" : "1", "comments.key2" : "sdfasdf" }
    

    只有在数组元素中必须匹配多个字段时才需要使用它。

    【讨论】:

    • 那行不通。即使一个 cmets 具有 key1,并且 不同 注释具有 key2,这也会匹配。您需要使用 $elemMatch。
    【解决方案2】:

    您可以使用$elemMatch 查询两个字段的子文档:

    { comments: { $elemMatch : { key1: 1, key2: 2 } } }
    

    You cannot return just the selected subdocument。你会得到所有的。因此,您必须在客户端进行过滤。 (当然,您可以排除主文档的所有其他字段)。

    【讨论】:

    • 你的意思是即使我使用“$elemMatch”,仍然会返回两个子文档?
    • $elemMatch!我不知道那件事。是的,那会奏效。正在更新答案。
    猜你喜欢
    • 2010-12-14
    • 2011-07-26
    • 1970-01-01
    • 2011-09-12
    • 2020-05-21
    • 2010-10-07
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多