我正在尝试使用$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"