myColl的结构:
myColl : {
_id : ObjectId,
name : String,
params : [{
_id : ObjectId,
name : String,
value : String}]
}
我在mongo shell上执行以下操作
db.myColl.find({"$or":[{"params":{"$or":[{"name":{"$regex":"data"}},{"value":{"$regex":"data"}}]}}]})
或执行:
db.myColl.find({"query" : {"$or":[{"params":{"$or":[{"name":{"$regex":"data"}},{"value":{"$regex":"data"}}]}}]}})
以上两者都会出现以下错误:
error: { "$err" : "invalid operator: $or", "code" : 10068 }
如何在mongo shell中的子文档数组中使用$或运算符。??
如果使用mongoose,我还想知道如何使用$或子数组子。?
答案 0 :(得分:1)
您需要在密钥中使用点表示法来定位子文档中的字段:
db.myColl.find({"$or":[
{"params.name": {"$regex": "data"}},
{"params.value": {"$regex": "data"}}
]})