如何按mongodb中number1加number2的值排序

时间:2015-05-12 09:35:15

标签: mongodb

我准备在mongodb中获取一些物品。

{number1:123,number2:321}
{number1:222,number2:4532}

例如,这些是我在数据库中的内容。但是现在,我想通过number1 + number2的值得到它们。

怎么做?

3 个答案:

答案 0 :(得分:3)

这里没有人真正说过的一个选择是使用聚合框架。比使用$where更好,因为它会更快,你可以实际对该回报进行排序,并且更多:

db.c.aggregate([
    {'$project': {sumField: {$add: ['$number1', '$number2']}}},
    {'$sort': {sumField: 1}}
]);
像这样。比使用内置JS更好,再加上索引和覆盖查询,你可以更快地实现这一点,因为聚合与$where不同,实际上可以使用索引。

答案 1 :(得分:1)

使用$ where运算符 db.myCollection.find( {'$where':'this.number1 + this.number2 = 200'})

答案 2 :(得分:0)

在mongodb中为您的架构添加虚拟内容可以帮助您

YourSchema.virtual('numbersum')
.get(function () {
  return this.number1 + ' ' + this.number2;
})

然后,你将能够做到这一点:

db.yourcollection.find().sort({numbersum:1});

检查这个答案。 Sorting by virtual field in mongoDB (mongoose)

编辑只有在使用mongoose作为连接器时才能使用