检查数组中的所有元素是否都具有mongodb中某个字段的值

检查数组中的所有元素是否都具有mongodb中某个字段的值,mongodb,mongodb-query,Mongodb,Mongodb Query,我需要验证每个文档的baz字段的值是否相同 结构是这样的 { _id : 111111, foo : 123123, bar : [ { subId : 121212, baz : abc123 }, { subId : 131313, baz : abc123 }, ] }, { _id : 22

我需要验证每个文档的baz字段的值是否相同

结构是这样的

{
    _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。