首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mongodb中按number1 + number2的值进行排序

如何在mongodb中按number1 + number2的值进行排序
EN

Stack Overflow用户
提问于 2015-05-12 09:35:14
回答 3查看 54关注 0票数 0

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

代码语言:javascript
复制
{number1:123,number2:321}
{number1:222,number2:4532}

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

怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-12 09:56:45

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

代码语言:javascript
复制
db.c.aggregate([
    {'$project': {sumField: {$add: ['$number1', '$number2']}}},
    {'$sort': {sumField: 1}}
]);

就像这样。与使用内置的JS、加上索引和覆盖的查询相比,您可以更快地进行聚合,而不像$where实际上可以使用索引。

票数 3
EN

Stack Overflow用户

发布于 2015-05-12 09:49:07

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

票数 1
EN

Stack Overflow用户

发布于 2015-05-12 09:44:42

在mongodb中将虚拟添加到架构中将有助于您

代码语言:javascript
复制
YourSchema.virtual('numbersum')
.get(function () {
  return this.number1 + ' ' + this.number2;
})

然后,你就能做到:

代码语言:javascript
复制
db.yourcollection.find().sort({numbersum:1});

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

编辑这将只在使用猫鼬作为连接器时起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30186951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档