如何在mongo shell和mongoose中使用$或操作子文件数组?

时间:2014-01-30 18:31:29

标签: node.js mongodb mongoose

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,我还想知道如何使用$或子数组子。?

1 个答案:

答案 0 :(得分:1)

您需要在密钥中使用点表示法来定位子文档中的字段:

db.myColl.find({"$or":[
    {"params.name": {"$regex": "data"}},
    {"params.value": {"$regex": "data"}}
]})