我在尝试查询Mongo中的字段时遇到了一些麻烦。我的文档如下:
{
"short_url": "DTsB9k",
"long_url": "http://www.example.com",
"date_created": {
"$date": "2013-01-01T14:10:29.899Z"
},
"ips": {
"24.184.209.227": {
"ip_address": "12.34.56.78",
"clicks": [
{
"click_date": {
"$date": "2013-01-01T14:10:41.784Z"
},
"click_referrer": null
},
{
"click_date": {
"$date": "2013-01-01T14:31:32.440Z"
},
"click_referrer": null
}
]
}
},
"users": {
"4": {
"user_id": "4",
"date_added": {
"$date": "2013-01-01T14:10:29.899Z"
},
"creator": true
}
},
"total_clicks": 2,
"_id": {
"$oid": "50e2ee55569df0b469000000"
}
}
我正在尝试查询user_id,最终会有多个。但我试过了
{ "users" : "4" }
{ "users.user_id" : "4" }
{ "users.*.user_id" : "4" }
这些都不起作用。我在这做错了什么?
答案 0 :(得分:2)
{“users”:4}只能查找用户字段等于4的文档,或者用户字段等于包含等于4的元素的数组
{“users.user_id”:4}如果您的user_id直接位于users对象下,但它位于“4”之下,那么它将无法匹配
{“users。*。user_id”:“4”}我不认为mongodb有这样的通配符功能。
要获取上述记录,您可以尝试:
{"users.4.user_id": "4"}
编辑: 如果“users”下的“4”与user_id相同,您也可以尝试查询:
{"users.4":{$exists:true}}