Mongodb 如何检查集合的字段是否包含单个值或值数组

Mongodb 如何检查集合的字段是否包含单个值或值数组,mongodb,find,Mongodb,Find,我有一个包含以下结构的文档的集合: [ { "_id" : ObjectId("5b23a2d11bc3e2550e749991"), "fieldA" : "field2", "fieldB" : [ "field2", "field2", "field2" ], "fieldC" : "ffield2" },

我有一个包含以下结构的文档的集合:

[
    {
        "_id" : ObjectId("5b23a2d11bc3e2550e749991"),
        "fieldA" : "field2",
        "fieldB" : [ 
            "field2", 
            "field2", 
            "field2"
        ],
        "fieldC" : "ffield2"
    },

    {
        "_id" : ObjectId("5b23a2d21bc3e2550e749992"),
        "fieldA" : "field2",
        "fieldB" : "ffield2",
        "fieldC" : "fffield2"
    },

    {
        "_id" : ObjectId("5b23a2d21bc3e2550e749993"),
        "fieldA" : "field1",
        "fieldB" : [ 
            "field1", 
            "field1", 
            "field1"
        ],
        "fieldC" : "ffield1"
    },

    {
        "_id" : ObjectId("5b23a2d21bc3e2550e749994"),
        "fieldA" : "field1",
        "fieldB" : "ffield1",
        "fieldC" : "fffield1"
    },

    {
        "_id" : ObjectId("5b23a2d31bc3e2550e749995"),
        "fieldA" : "field3",
        "fieldB" : [ 
            "field3", 
            "field3", 
            "field3"
        ],
        "fieldC" : "ffield3"
    },

    {
        "_id" : ObjectId("5b23a2d31bc3e2550e749996"),
        "fieldA" : "field3",
        "fieldB" : "ffield3",
        "fieldC" : "fffield3"
    }
]
我只想找到
filedB
为数组值的文档。触发查询时,
filedB
的值未知。只需知道一些文档具有
fieldB
作为数组,而其他文档具有基本字符串值

如何查找其
filedB
字段具有数组值的文档?

根据,您可以使用运算符
$type
;允许检查字段的类型


示例

db.data.find({x:{$type:“minKey”}})

要检查
数组
请键入
4
数组


@德沙鲁说了一些很棒的话。签出您正在使用的mongodb版本,有关
$type
3.2
3.6
发生了更改




如果您使用的是mongodb版本低于3.2,请选择另一种解决方案

db.getCollection('testCollection').find( {$where:"typeof this.fieldB !== 'string'"})
一条注释尽管您应该将字段值类型更改为基本字符串或数组,但考虑这两种类型并不是一个好的设计


如果文档对
fieldB
具有单个值,则可以将其更改为单个元素的数组。

您使用的是哪个版本的mongodb?mongodb v3.4.5版本不错,这就是我问的原因;)谢谢你的回复。。。我试过了,但没有达到我的预期:)。。。文档中提到:当应用于数组时,$type与指定BSON类型的任何内部元素匹配。例如,当匹配$type:'array'时,如果字段具有嵌套数组,文档将匹配。如果字段本身是数组,则不会返回结果。