繁体   English   中英

mongo文档中的字段求和

[英]Summing Fields in a mongo document

好像我发现的每个类似问题总是回答错误的“事物”。 我有一个数据集,简单的文档(不是子文档)。 每个文档都有六个字段,这些字段基本上是位字段。 每个文档应至少具有以下其中一个字段为true(1),但所有其他字段必须为false(0)。 我认为判断哪些文档不符合该规则的最简单方法是将每个文档的六个字段加起来,如果大于1,则失败,我想将文档提取到这些文档的集合中因此我可以查找/查询更多信息,也可以只显示它。

所以,

{ 
    "_id" : ObjectId("598d5fbd8b157042cc12e5bf"), 
    "FirstName" : "fred", 
    "Hispanic" : NumberInt(1), 
    "Indian" : NumberInt(0), 
    "Asian" : NumberInt(0), 
    "Black" : NumberInt(0), 
    "Pacific" : NumberInt(0), 
    "White" : NumberInt(0), 
    "Unknown" : NumberInt(0) 
}
{ 
    "_id" : ObjectId("598d5fbd8b157042cc12e5c0"), 
    "FirstName" : "joe", 
    "Hispanic" : NumberInt(0), 
    "Indian" : NumberInt(0), 
    "Asian" : NumberInt(0), 
    "Black" : NumberInt(0), 
    "Pacific" : NumberInt(0), 
    "White" : NumberInt(1), 
    "Unknown" : NumberInt(0)
}
{ 
    "_id" : ObjectId("598d5fbd8b157042cc12e5c1"), 
    "FirstName" : "margie", 
    "Hispanic" : NumberInt(1), 
    "Indian" : NumberInt(0), 
    "Asian" : NumberInt(0), 
    "Black" : NumberInt(0), 
    "Pacific" : NumberInt(0), 
    "White" : NumberInt(1), 
    "Unknown" : NumberInt(0)
}

该解决方案将返回这些字段之一,因为如果将我提供的所有比赛标识符加起来,它将为“ 2”,而其他字段将为1。

对Mongo来说还算是新手,这些示例对我们很有帮助,但是到目前为止,我发现的所有内容似乎都围绕着汇总子文档数据来确定文档的选择,而我尝试的一切只是返回任何内容。 就像是一个小组(不这么认为)还是一个项目; 我求和加[fields]还是求和...我有些困惑。

感谢您的任何帮助,您可以提供。

如果我理解得很好,则您需要以下内容:

db.yourCollection.aggregate(
    [
        {
            $project: {
                total: { $add: [ "$Hispanic", "$Indian", "$Asian", "$Black", "$Pacific", "$White", "$Unknown" ]}
            }
        },
        {
            $match: {
                "total": {"$gt": 1}
            }
        },
    ]
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM