对于这么多的数据,我只想匹配那些是数组的字段。但我想将$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"
]
}
这是我尝试的内容,但它返回一个语法错误,在
$match
一行上。说实话,我尝试了所有我能想到或在Mongo文档上看到的语法:> db.getCollection('Test').aggregate([ {
> $project:{
> "item":"$fieldIDA"
> }}
> {$match : { $isArray: {"$item"} }:true}, ])
我知道这是一个简单的请求,但我不知道如何使其工作。
$match
阶段来测试聚合中的数组字段,例如:{ $match: { $expr: { $isArray: "$arr" } }
,其中arr
是一个数组字段。 - prasad_