Mongo按动态字段排序

时间:2014-03-11 03:28:59

标签: mongodb meteor

所以我传递了一个动态变量,这是我想要排序的字段的名称。

让我们说下面的sortVariable可能等于“price”,“createdAt”,“name”等。这不起作用,我该怎么做?

function findStuff (sortVariable) {
    var postings = Postings.find({
      "device.name": filter.exactDevice,
    }, {
      sort: {
        sortVariable: 1
      }
    });
    return postings;
}

2 个答案:

答案 0 :(得分:9)

您不能将变量用作对象文字中的键。试一试:

var findStuff = function(sortVariable) {
  var sort = {};
  sort[sortVariable] = 1;

  return Postings.find({
    'device.name': filter.exactDevice
  }, {
    sort: sort
  });
};

答案 1 :(得分:3)

如果您使用的是节点v4,则可以使用ES6语法:

   find.sort({[sortVariable]: 1});
return Postings.find({
    'device.name': filter.exactDevice
  }, {
    sort: {[sortVariable]: 1}
  });