首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cond和if mongodb中排序

问在cond和if mongodb中排序
EN

Stack Overflow用户
提问于 2019-08-12 01:39:51
回答 1查看 136关注 0票数 1

我只想在满足条件的情况下对聚合进行排序。

这就是我到目前为止所知道的:

代码语言:javascript
复制
                    {
                        $cond: {
                           if: { $gte: [sort, "like"] },
                           then: { $divide: { $sort : { total_likes : -1 } } },
                           else: { $divide: '' }
                         }
                    }

sort是一个来自查询参数的变量。

只有当sort是"likes“时,我才想按total_likes排序。如果不是,我就不去管它了。

EN

回答 1

Stack Overflow用户

发布于 2019-08-12 02:42:42

首先,@schoenbl,如果你想匹配mongo聚合中的某些条件,你应该使用$match聚合。它将发送满足给定条件的文档。

排序条件:{ $gte:

,"like“}

在MongoDB中,不允许使用"gte“运算符比较字符串。对于MongoDB中的字符串比较,您会得到两个运算符:

用于区分大小写$cmp.

  • for的
  1. 不区分大小写$strcasecmp.

then:{ $divide:{ $sort:{ total_likes:-1 }} },

接下来,你使用了除法运算符,不知道你需要什么,但语法不正确,请参考$divide,以获得更好的知识。

此外,您在$cond中进行排序,这意味着您希望对每个元素进行排序,这是不可能的,因为您在$cond运算符内部,并且它正在对单个文档执行操作,所以不能在没有比较的情况下进行排序。

现在,根据您的需要,我已经准备了下一阶段,这将提供排序的文件,其中包含“排序”等于“喜欢”。

代码语言:javascript
复制
{$match:{"sort":"like"}},{$sort:{"total_likes":-1}}

输出:

代码语言:javascript
复制
{ "_id" : ObjectId("5d50569fbe39828b4a22fba2"), "name" : "kyle", "sort" : "like", "total_likes" : 5 }
{ "_id" : ObjectId("5d5056a6be39828b4a22fba3"), "name" : "jack", "sort" : "like", "total_likes" : 2 }
{ "_id" : ObjectId("5d5056abbe39828b4a22fba4"), "name" : "john", "sort" : "like", "total_likes" : 1 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57452198

复制
相关文章

相似问题

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