gpt4 book ai didi

arrays - MongoDB : find documents having 2 values in Array conforming to multiple criteria

转载 作者:可可西里 更新时间:2023-11-01 10:03:55 25 4
gpt4 key购买 nike

假设,我们有文件:

{_id : 1, arr : [5,50]}
{_id : 2, arr : [11,53]}

目标是找到数组中有 2 个值的文档,一个必须在范围 (4,9) 内,第二个在范围 (45,55) 内。在这种情况下,只有 _id : 1 的文档应该返回。

试过这个:db.Collection.find({arr : {$elemMatch : {$gte : 4, $lte : 9}}}) - 返回第一个文档db.Collection.find({arr : {$elemMatch : {$gte : 45, $lte : 55}}}) - 返回两者

如何将这些标准组合在一起?

db.Collection.find({arr : {$and : [{$elemMatch : {$gte : 4, $lte : 9}}, {$elemMatch : {$gte : 45, $lte : 55}}]}}) 

返回:错误:{ "$err": "无效运算符:$and", "code": 10068 }

最佳答案

您的想法是正确的,但是 $and 需要位于您的条件对象的顶层:

db.Collection.find({$and: [
{arr: {$elemMatch: {$gte: 4, $lte: 9}}},
{arr: {$elemMatch: {$gte: 45, $lte: 55}}}
]})

如果您还想确保它们是唯一 两个元素,那么您可以向$and 数组添加另一个项来检查:

db.Collection.find({$and: [
{arr: {$elemMatch: {$gte: 4, $lte: 9}}},
{arr: {$elemMatch: {$gte: 45, $lte: 55}}},
{'arr.2': {$exists: false}}
]})

关于arrays - MongoDB : find documents having 2 values in Array conforming to multiple criteria,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com