对于如此充足的数据,我只想匹配数组字段。但我想退出$match这个项目。
这是数据样本:
/* 1 */
{
"_id" : ObjectId("5df8b596400289966e77e268"),
"fieldIDA" : "1496461ahu-45196tfvj",
"fieldIDB" : "4446rarr21-vau15ar6a"
}
/* 2 */
{
"_id" : ObjectId("5df9ee6014585733585abde6"),
"fieldIDA" : "78a24da5ea-a0a84tf5t",
"fieldIDB" : [
"17a7a61a78-4649atfvj",
"149648a6a1-777777fvj",
"4846131prv-45aeda8vj"
]
}
/* 3 */
{
"_id" : ObjectId("5df9ee6014585733585abde9"),
"fieldIDA" : null,
"fieldIDB" : "7a25rayfg7-t69468a8v"
}
/* 4 */
{
"_id" : ObjectId("5df9ffe714585733585ac5b8"),
"fieldIDA" : [
"4946465434-vuhfyfuog",
"198fdyufu5-4654d43dc",
"aeadad596a-aead82a2a"
],
"fieldIDB" : [
"17a7a61a78-4649atfvj",
"149648a6a1-777777fvj",
"4846131prv-45aeda8vj"
]
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试的,但它返回一个语法错误,老实说,$match我尝试了我能想到的或在 mongo 文档上查看的所有语法:
> db.getCollection('Test').aggregate([ {
> $project:{
> "item":"$fieldIDA"
> }}
> {$match : { $isArray: {"$item"} }:true}, ])
Run Code Online (Sandbox Code Playgroud)
我知道这是一个简单的请求,但我不知道如何使其发挥作用。
您可以尝试以下其中一项:
db.Test.find({ "fieldIDA" : { $type: "array" } })
Run Code Online (Sandbox Code Playgroud)
或这个 :
db.Test.aggregate([{$project : {fieldIDA: 1, _id:0}},{$match : { "fieldIDA" : { $type: "array" } }}])
Run Code Online (Sandbox Code Playgroud)
参考: $类型