MongoDB只选择类型对象



我正在尝试使用$type操作符选择文档。

这是我的收藏:

{id: 1, a: [{b: "", c: ""}]},
{id: 2, a: {b: "", c: ""}}
以下是我的查询:
db.collection.find( {a: { $type: "array"}} )
// It will return id: 1
db.collection.find( {a: { $type: "object"}} )
// It will return id: 2 AND id: 1

对于第二个查询,我想只选择对象类型。

https://mongoplayground.net/p/kp6UVzrUzjA
我做错了吗?

每个类型都与包含该类型至少一个成员的类型或数组匹配。看到这个

查询

此处测试代码

db.collection.find({
a: {
$not: {
$type: "array"
},
$type: "object"
}
})

您也可以使用聚合管道:

db.collection.aggregate([
{
$match: {
$expr: {
$eq: [ { $type: "$a" }, "object" ]
}
}
}
])

美元类型(聚合)

$type查询操作符(根据数组元素的BSON类型匹配数组元素)不同,$type聚合操作符不检查数组元素。相反,当传递数组作为参数时,$type聚合操作符返回参数的类型,即"array"

相关内容

  • 没有找到相关文章

最新更新