MongoDB 点分查询有效,elemMatch 查询无效

MongoDB dotted query works, elemMatch query doesn't

同时

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

有效,获取 1 个匹配的文档,这个

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

没有获取任何东西。不应该吗? (我会使用虚线但想扩展查询。)

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

UPDATED:这是一个文档示例(已修剪)

{
    "_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")
}

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

The $elemMatch operator matches documents that contain an array field with at least one element that matches all the specified query criteria.