首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb:试图找到所有带有特定子文档字段的文档,为什么我的查询不能工作?

Mongodb:试图找到所有带有特定子文档字段的文档,为什么我的查询不能工作?
EN

Stack Overflow用户
提问于 2014-08-01 03:08:19
回答 1查看 253关注 0票数 0

下面是我正在查询的集合中的一个文档示例

代码语言:javascript
复制
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‘。

下面是我试图使用的查询:

代码语言:javascript
复制
db.research.find({$or: [{_userId: 'aTPzFad8DdFXxRrX4'}, {collaborators: {$in: [{userId: 'aTPzFad8DdFXxRrX4'}]}}] })

它找不到文档并给我一个语法错误。我在这里有什么问题?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-01 03:14:46

$in运算符基本上是$or的简化版本,但是这里实际上只有一个参数,所以您甚至不需要它。用点表示法代替:

代码语言:javascript
复制
db.research.find({
    '$or': [
        { '_userId': 'aTPzFad8DdFXxRrX4'},
        { 'collaborators.userId': 'aTPzFad8DdFXxRrX4'}
    ] 
})

如果需要多个值,则使用$in

代码语言:javascript
复制
db.research.find({
    '$or': [
        { '_userId': 'aTPzFad8DdFXxRrX4'},
        { 'collaborators.userId': { 
            '$in': ['aTPzFad8DdFXxRrX4','aTPzFad8DdFXxRrX5']
        }}
    ] 
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25072282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档