我正在尝试根据价格范围过滤文档,
我有以下文档结构示例
{
"name": "test 1",
"priceObject" : [
{
"price" : {
"value" : 1000
}
},
{
"price" : {
"value" : 500
}
},
{
"price" : {
"value" : 333
}
}
]
}
我使用聚合来匹配至少具有一个价格的文档must大于 500 且小于 1000
{
"$match": {
"priceObject.price.value": {
"$gt": 500,
"$lt": 1000
}
}
}
它返回“test 1”文档,尽管它不应该返回,因为
- 500 不小于 1000 且大于 500
- 1000 不小于 1000 且大于 500
- 333 不小于 1000 且大于 500
我怎样才能做到这一点?
Thanks
如果您指定多个条件来查询数组,则必须使用$elemMatch https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#examples查询运算符
db.collection.aggregate([
{ "$match": {
"priceObject": {
"$elemMatch": {
"price.value": {
"$gt": 500,
"$lt": 1000
}
}
}
}}
])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)