检查数组中的所有元素是否都具有mongodb中某个字段的值
我需要验证每个文档的baz字段的值是否相同 结构是这样的检查数组中的所有元素是否都具有mongodb中某个字段的值,mongodb,mongodb-query,Mongodb,Mongodb Query,我需要验证每个文档的baz字段的值是否相同 结构是这样的 { _id : 111111, foo : 123123, bar : [ { subId : 121212, baz : abc123 }, { subId : 131313, baz : abc123 }, ] }, { _id : 22
{
_id : 111111,
foo : 123123,
bar : [
{
subId : 121212,
baz : abc123
},
{
subId : 131313,
baz : abc123
},
]
},
{
_id : 222222,
foo : 234234,
bar : [
{
subId : 212121,
baz : def456
},
{
subId : 313131,
baz : def456
},
]
},
基本上,我只需要确保每个文档的baz都应该是相同的。
我如何查询它?试试这个:
db.allSame.aggregate([
{
$addFields:{
“唯一计数”:{
$sum:{
$map:{
输入:“$bar”,
作为:“项目”,
在:{
$cond:[{$eq:[“$$item.baz”,{$arrayElemAt:[“$bar.baz”,0]}]},0,1]
}
}
}
}
}
},
{
$match:{uniquebazacount:0}
}
]);
要获取具有不同值的文档,请更改$match
,如下所示:
{
$match: {
uniqueBazCount: { $gt: 0 }
}
}
你能解释一下实际的业务需求吗?如果要验证来自单一来源的输入,则应在插入/更新时进行验证,否则您可以将
baz
字段保存为根级别字段吗?我需要检查集合中的所有文档,以使每个文档具有相同的baz。也许我可以用不同的baz获得所有文档的id。