【问题标题】:How to sort by the value of number1 plus number2 in the mongodb如何在mongodb中按number1加number2的值排序
【发布时间】:2015-05-12 17:56:45
【问题描述】:

我准备在 mongodb 中获取一些对象。

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

例如,这些是我在数据库中拥有的。但是现在,我想通过 number1 + number2 的值来获取它们。

怎么做?

【问题讨论】:

  • 请包含您用于获取此输出的代码/查询。

标签: mongodb


【解决方案1】:

这里没有人真正说过的一个选项是使用聚合框架。比使用 $where 更好,因为它会更快,而且您实际上可以对返回进行排序等等:

db.c.aggregate([
    {'$project': {sumField: {$add: ['$number1', '$number2']}}},
    {'$sort': {sumField: 1}}
]);

像这样。比使用内置 JS 更好,加上索引和覆盖查询,您可以更快地完成聚合,不像 $where 实际上可以使用索引。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在 mongodb 中将虚拟添加到您的架构将帮助您

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

      那么,你就可以这样做了:

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

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

      EDIT这仅在使用猫鼬作为连接器时才有效

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多