【发布时间】:2016-05-05 21:30:07
【问题描述】:
我正在玩 mongodb,但在查找数组中的元素时遇到了麻烦
我的收藏是这样的
{
"_id" : ObjectId("4c4b1476238d3b4dd5000002"),
"username" : "pbakkum",
"first_name" : "Peter",
"last_name" : "Bakkum",
"age" : 21,
"addresses" : [
{
"name" : "home",
"street" : "588 5th Street",
"city" : "Brooklyn",
"state" : "CA",
"zip" : 11215
},
{
"name" : "work",
"street" : "588 5th Street",
"city" : "Brooklyn",
"state" : "CA",
"zip" : 11215
},
{
}
]
}
{
"_id" : ObjectId("4c4b1476238d3b4dd5000001"),
"username" : "kbanker",
"email" : "kylebanker@gmail.com",
"first_name" : "Kyle",
"last_name" : "Banker",
"hashed_password" : "bd1cfa194c3a603e7186780824b04419",
"addresses" : [
{
"name" : "home",
"street" : "588 5th Street",
"city" : "Brooklyn",
"state" : "NY",
"zip" : 11215
},
{
"name" : "work",
"street" : "1 E. 23rd Street",
"city" : "New York",
"state" : "NY",
"zip" : 10010
}
],
"payment_methods" : [
{
"name" : "VISA",
"last_four" : 2127,
"crypted_number" : "43f6ba1dfda6b8106dc7",
"expiration_date" : ISODate("2016-05-01T07:00:00Z")
}
],
"age" : 151
}
当我触发类似这样的查询时。
db.users.find({"addresses.name":"home","addresses.state":"NY"});
此查询的输出是一条用户名为 kbanker 的记录
这意味着它与参数 "name":"home 和addresses.state:NY 完全匹配并且只返回一条记录。
但是根据我的理解,这应该返回两个记录,因为它应该检查 enitre 数组中的任何参数 "name":"home" 和addressss.state:NY,如果它们中的任何一个匹配它应该显示那个记录。
这种只选择一条记录的行为违背了 $elemMatch 属性的目的?
我是对的还是新版本的 mongodb 发生了一些变化。 我正在使用 3.2.5
【问题讨论】:
标签: arrays mongodb mongodb-query