按数组类型查询 - MongoDB

2024-04-16

我必须按类型查询我的 mongoDB 集合。
假设我有这两个文件hello收藏:

{
        "_id" : ObjectId("56684ee0f597654b99d0d636"),
        "name" : "Scrooge",
        "surname" : "McDuck",
        "address" : {
                "road" : "Money Bin",
                "number" : 19
        },
        "hobbies" : [
                "money",
                "food",
                "cooking"
        ]
}
{
        "_id" : ObjectId("66684ee0f597654b99d0d636"),
        "name" : "Mickey",
        "surname" : "Mouse",
        "address" : {
                "road" : "Topolinia",
                "number" : 34
        },
        "hobbies" : [
                "minnie",
                "cheese"
        ]
}

现在,如果我按数组类型查询:

db.hello.find({hobbies: {$type: 4 }})

我的输出中没有任何文档。如你看到的here https://docs.mongodb.org/v3.0/reference/bson-types/4是数组类型的数量。


这是预期的行为。您可以简单地使用“点符号” https://docs.mongodb.org/manual/core/document/#document-dot-notation$exists https://docs.mongodb.org/manual/reference/operator/query/exists/操作员

db.hello.find({ 'hobbies.0': { '$exists': true } } )

另一种方法是使用聚合和$isArray https://docs.mongodb.org/manual/reference/operator/aggregation/isArray/#exp._S_isArrayMongoDB 3.2 中提供了运算符。但这效率较低,因为$redact https://docs.mongodb.org/manual/reference/operator/aggregation/redact/进行集合扫描。

 db.hello.aggregate([ 
    { "$redact": { 
        "$cond": [
             { $isArray: "$hobbies" }, 
             "$$KEEP", 
             "$$PRUNE" 
        ]
    }}
])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按数组类型查询 - MongoDB 的相关文章

随机推荐