我有一个集合,其中有一个字段作为嵌套字典。
样品:
{
"_id": ObjectId(""),
"family_member": {
"mother":{
"name": "Mary",
"age": 40,
"address": {
"city": "Dover",
"state": "Delaware",
"zip_code": "19901"
}
},
"father":{
"name": "John",
"age": 43,
"address": {
"city": "Dover",
"state": "Delaware",
"zip_code": "19901"
}
},
"brother":{
"name": "Jordan",
"age": 13,
"address": {
"city": "Honolulu",
"state": "Hawaii",
"zip_code": "96813"
}
}
}
}
我想得到一份文件的清单,其中任何家庭成员居住在夏威夷。基本上是这样的:db.users.find({'family_member.*.address.state': "Hawaii"})
。
这样的事情是可能的吗?或者我必须写多个匹配条件吗?
2条答案
按热度按时间q9rjltbz1#
您可以使用带通配符的点表示法来匹配任何家族成员:
这将返回所有家庭成员的地址状态为“夏威夷”的文档。但是,请注意,此语法仅在MongoDB 4.4及更高版本中支持。
希望这能有所帮助!
yruzcnhs2#
您将需要使用聚合框架来匹配不同字段的子文档。
在您的情况下,您可以将对象转换为数组,过滤条件并转换回对象。