【问题标题】:Mongoose Sort by an object's object valueMongoose 按对象的对象值排序
【发布时间】:2013-04-19 22:58:50
【问题描述】:

我一直在编写一个小型节点应用程序,部分查询是按对象的点赞数排序,如下所示:

likes      : { num: { type: Number, default: 0 }, IDs:[Number]...

和排序查询:

Object.find().sort({likes : 'desc'};).execFind(function(err, confessions){...

这不按喜欢的数量排序(就像我想要的那样),而是按最近喜欢的对象排序。

如何按 likes.num 排序?我似乎无法让它工作......

编辑:继承人要求的 mongo 文档

{ __v: 0,
    _id: 51703a470ef8e60000000002,
    name: 'Name',
    text: ' this is a fresh submission for  mongo to hold',
    comments: { commentData: [], num: 0 },
    removed: false,
    time: Thu Apr 18 2013 11:24:07 GMT-0700 (PDT),
    likes: { IDs: [ 100001810858894 ], num: 1 },
    dislikes: { IDs: [ 100001810858894 ], num: 1 } }

编辑:这是整个查询

exports.index = function (req, res) {
console.log(req.user);
var sortParams;
var sort = req.params.sortingMethod;
console.log(sort);
if (sort == 'newest'){
     sortParams = { time : 'asc'};
} else if (sort == 'oldest'){
     sortParams = { time : 'desc'};
} else if (sort == 'likes'){
     sortParams = {likes.num : 'desc'};
} else if (sort == 'dislikes'){
     sortParams = {dislikes.num :'desc'};
} else {
     sortParams = { time : 'desc'};
}

console.log(sortParams);

Confession.find().sort(sortParams).execFind(function(err, confessions){...

【问题讨论】:

  • 您需要按实际的点赞数排序——它存储在文档中的什么位置?您可以将 mongo 中的实际文档粘贴到您的问题中吗?
  • 点赞文件代表什么? num 会是喜欢的数量吗?然后你需要对“likes.num”进行排序
  • 这会使用 Unexpected token 破坏整个应用程序。错误,我之前尝试过,结果相同。同样是 num 是喜欢的次数
  • 你可以试试sortParams = {'likes.num' : 'desc'}; 吗?
  • @LindaQin 就是这样!非常感谢

标签: node.js mongodb mongoose


【解决方案1】:

答案是将查询参数用 Linda Quin 建议的引号括起来

sortParams = {'likes.num' : 'desc'};

【讨论】:

  • 就像我在原始答案和评论中所说的那样。
  • 哦,对不起,我现在意识到您要求我包含引号。非常感谢您的帮助
【解决方案2】:

您将获得按对象值排序的结果 - 问题是对象是完整的 JSON 文档。您真正想要的是按对象中特定字段的值排序,在您的情况下是“likes.num”

引号将包含在查询中:

 {"likes.num":-1} 

【讨论】:

  • 这会使用 Unexpected token 破坏整个应用程序。错误,我之前尝试过,结果相同。也 yes num 是喜欢的数量。 sortParams = {likes.num : 'desc'}; SyntaxError: Unexpected token .
  • 您需要在点表达式周围使用双引号。 {"likes.num":-1}
猜你喜欢
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多