MongoDB匹配指定犬种多条件查询报错$and must be an array如何解决
现有写法的问题
- breed字段重复定义:同一个查询对象内重复声明
breed字段会导致前面的值被最后一个覆盖,无法实现匹配三个犬种的需求,应该用$in运算符匹配多个可选值。 $and语法错误:首先是重复声明$and字段同样会发生值覆盖,其次第二个$and后传入的是对象而非要求的数组类型,这就是你收到报错的直接原因。另外多个并列的过滤条件默认就是逻辑与关系,不需要显式声明$and。- 符号不匹配:第一个
$and的数组内仅写了一个条件,还缺少了闭合的花括号,属于语法错误。
合理实现方案
正确的查询语句如下:
db.animals.find({ "animal_id": 1, "breed": { "$in": ["Labrador Retriever Mix", "Chesapeake Bay Retriever", "Newfoundland"] }, "age_upon_outcome_in_weeks": { "$gte": 26, "$lt": 156 }, "sex_upon_outcome": "Intact Female" }).sort({"age_upon_outcome_in_weeks": 1})
这里直接用$in处理breed的多选逻辑,所有并列条件默认按逻辑与执行,既符合语法要求,也更简洁易读。
内容的提问来源于stack exchange,提问作者liliaz
相关产品推荐
相关产品推荐

