MongoDB比较两个字段并在所有文档上求和另一个字段

LGEYH

样本文档:

db.l5p1s3.insertMany([{x1:0,x2:0,v:0.08},{x1 : 0,x2:1,v:0.07},{x1:0,x2:2,v:0.04},{x1:0,x2:3,v:0.00}])
db.l5p1s3.insertMany([{x1:1,x2:0,v:0.06},{x1 : 1,x2:1,v:0.15},{x1:1,x2:2,v:0.05},{x1:1,x2:3,v:0.04}])
db.l5p1s3.insertMany([{x1:2,x2:0,v:0.05},{x1 : 2,x2:1,v:0.04},{x1:2,x2:2,v:0.10},{x1:2,x2:3,v:0.06}])
db.l5p1s3.insertMany([{x1:3,x2:0,v:0.00},{x1 : 3,x2:1,v:0.03},{x1:3,x2:2,v:0.04},{x1:3,x2:3,v:0.07}])
db.l5p1s3.insertMany([{x1:4,x2:0,v:0.00},{x1 : 4,x2:1,v:0.01},{x1:4,x2:2,v:0.05},{x1:4,x2:3,v:0.06}])

查询:

db.l5p1s3.aggregate({$match : { x1 :{$eq : "x2"} }} , {$group : {_id : {} , sum : {$sum : "$v"}}})

我得的所有值的总和vx1 == x2我尝试了上述查询,但未获得任何输出。

谁-假面真灵魂

您的match阶段({$match : { x1 :{$eq : "x2"} }})表示获取所有文档,其中x1字段具有字符串值x2-这不是您想要的。因此,要比较两个字段并获得必需的o / p,请尝试以下聚合查询:

db.collection.aggregate([
  /** Matches docs where x1 == x2 */
  { $match: { $expr: { $eq: ["$x1", "$x2"] } } },
  /** Iterate over all docs & sum -up 'v' field */
  { $group: { _id: "", sum: { $sum: "$v" } } }
]);

测试: MongoDB-操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

比较两个对象中的字段,并在Java中将一个字段更新为另一个字段

mongodb聚合:如果两个字段的值匹配,则将相应字典的另一个字段的值添加到新字段

JQ - 将两个字段合并为一个具有另一个字段名称的数组

mongodb在从另一个字段派生的所有文档中添加字段

SELECT 在两个字段中具有相同值的行,在另一个字段中具有不同的值

比较另一个字典中两个字典的值

连接表,对一个字段中的所有字段求和,按日期和另一个字段分隔

Mysql:一个表的一个字段和另一个表的两个字段之间的多重关系

如何将一个表中的两个字段关联到另一个表中的一个字段

一个字段基于另一个字段的求和

django模型具有另一个模型的两个字段

Pymongo:汇总所有不包含一个字段而包含另一个字段的所有文档-分组依据

Mongodb 比较使用一个字段与对象数组中的另一个字段

Laravel验证:如果另一个字段可用,则需要两个字段中的任何一个

按“ STRING”分组,并在分组时对另一个字段求和

Mongodb按一个字段选择所有字段,然后按另一个字段排序

如何查找一个字段的值与另一个字段的值匹配的所有文档

Mongodb在一个字段上查询取决于另一个字段

在 MongoDB 中,有一个对象列表,通过查询同一对象的另一个字段的值,根据对象的一个字段的值对所有文档进行排序

在每个文档中添加一个新字段,并在mongodb中为同一文档的另一个字段赋值

查找某个字段与数组中另一个字段进行比较的文档

在两个字段上进行全文搜索比在一个字段上搜索更快

选择在一个字段上具有值并且在另一个上的两个值之间的行

从另一个页面更新两个字段的数据

如何要求一个字段或另一个字段(或两个其他字段之一),但不是全部?

mongoDB $ set问题,使用文档的键值/另一个字段值

MYSQL连接两个具有相同字段值的表字段,但如果另一个字段与另一个字段不匹配,则仍将包括

具有两个字段和一个搜索参数的mongoose find()文档

Mongodb 更新文档中的一个字段,然后根据前一个字段的值更新另一个