虽然
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")
}
答案 0 :(得分:1)
您的第二个查询未返回任何结果,因为data
不是数组字段。这是预期的行为,请参阅documentation
$elemMatch
运算符匹配包含数组字段的文档,其中至少有一个元素符合所有指定的查询条件。