如何使用mongodb比较两个字段加一个数字的字段?

时间:2019-05-07 10:23:27

标签: mongodb go mgo

我正在使用golang从mongodb查询集合。

我需要的结果是这样的:

    select * from score 
    where math > english + 30 

但是我不知道如何使用mongo脚本编写它。

mongodb:

db.score.insert({math: 60, english: 20,user_id: 6})
db.score.insert({math: 20, english: 30,user_id: 5})
db.score.insert({math: 10, english: 40,user_id: 4})
db.score.insert({math: 60, english: 10,user_id: 1})
db.score.insert({math: 60, english: 10,user_id: 2})
db.score.insert({math: 60, english: 10,user_id: 3})

,我想要的结果是比较math> english + 30 并按user_id分组。

2 个答案:

答案 0 :(得分:0)

您可以在mongodb中使用$ where运算符

答案 1 :(得分:0)

  

MongoDb查询如下

1. db.getCollection('score').find({"$where":function() {
       return obj.math > obj.english+30;
   } }).sort({"user_id":1})
2. db.getCollection('score').find({$where:"this.math > 
   this.english+30"}).sort({"user_id":1})
  

对于go mongoWrapper来说,您可以像这样简单地构建查找查询

findQ:=bson.M{"$where":"this.math > 
   this.english+30"}
  

并将findQ放在您的mongodb Wrapper函数中