MongoDB点缀查询工作,elemMatch查询不

时间:2015-08-28 12:47:27

标签: arrays mongodb mongodb-query nested-queries database

虽然

collection.find({ "data.username": "someusername" }}})

工作,获取1个匹配的文档,这个

collection.find({ data: { $elemMatch: { username: "someusername" }}})

无法获取任何内容。不应该吗? (我使用虚线但想扩展查询。)

这是Meteor集合上的mongo控制台。也在Robomongo和Meteor控制台中尝试过,结果相同。

更新 :以下是文档示例(已裁剪)

{
    "_id" : "fDyZsiuqQgkRmPno5",
    "type" : "user",
    "data" : {
        "id" : 1234,
        "username" : "someusername",
        "website" : "http://www.somewhere.com",
        "email" : null,
        "payments" : [ 
            {
                "payment" : {
                    "id" : "zFyZsiGgQskRmPn43"
                }
            }
        ]
    },
    "createdAt" : ISODate("2015-08-28T12:16:46.918+02:00")
}

1 个答案:

答案 0 :(得分:1)

您的第二个查询未返回任何结果,因为data不是数组字段。这是预期的行为,请参阅documentation

  

$elemMatch运算符匹配包含数组字段的文档,其中至少有一个元素符合所有指定的查询条件。