下面是我正在查询的集合中的一个文档示例
meteor:PRIMARY> db.research.findOne({_id: 'Z2zzA7dx6unkzKiSn'})
{
"_id" : "Z2zzA7dx6unkzKiSn",
"_userId" : "NtE3ANq2b2PbWSEqu",
"collaborators" : [
{
"userId" : "aTPzFad8DdFXxRrX4"
}
],
"name" : "new one",
"pending" : {
"collaborators" : [ ]
}
}我想用_userId:'aTPzFad8DdFXxRrX4‘或从协作者数组userId:'aTPzFad8DdFXxRrX4’找到这个集合中的所有文档
因此,我想查看集合并检查_userId字段是否为'aTPzFad8DdFXxRrX4‘。如果没有,那么检查文档上的协作者数组,并检查是否有一个带有userId的对象:'aTPzFad8DdFXxRrX4‘。
下面是我试图使用的查询:
db.research.find({$or: [{_userId: 'aTPzFad8DdFXxRrX4'}, {collaborators: {$in: [{userId: 'aTPzFad8DdFXxRrX4'}]}}] })它找不到文档并给我一个语法错误。我在这里有什么问题?谢谢
发布于 2014-08-01 03:14:46
$in运算符基本上是$or的简化版本,但是这里实际上只有一个参数,所以您甚至不需要它。用点表示法代替:
db.research.find({
'$or': [
{ '_userId': 'aTPzFad8DdFXxRrX4'},
{ 'collaborators.userId': 'aTPzFad8DdFXxRrX4'}
]
})如果需要多个值,则使用$in
db.research.find({
'$or': [
{ '_userId': 'aTPzFad8DdFXxRrX4'},
{ 'collaborators.userId': {
'$in': ['aTPzFad8DdFXxRrX4','aTPzFad8DdFXxRrX5']
}}
]
})https://stackoverflow.com/questions/25072282
复制相似问题