在MongoDB查询中选择字段并限制总结果(Meteor)

时间:2017-01-13 19:53:38

标签: meteor

在我的Meteor应用程序中,我试图接收有限数量的用户(在服务器上!)。在那些用户中,我只想收到一些指定的字段。

为什么此查询无法按预期工作?

const users = Meteor.users.find(
  {
    'roles.__global_roles__': {$in: ['myRole']},
    $and: query
  },
  {fields: {
    username: 1,
    firstName: 1,
    lastName: 1,
    update: 1
  }},
  {
    limit: 2,
    sort: {'update.any': -1}
  }
).fetch();

使用此查询,将忽略限制和排序。仅接收选定的字段。

然后我尝试了这个:

const users = Meteor.users.find(
  {
    'roles.__global_roles__': {$in: ['myRole']},
    $and: query
  },
  {
    limit: 2,
    sort: {'update.any': -1}
  }
).fetch();

现在限制和排序工作但显然我得到了包含所有字段的整个用户对象。

将两者结合起来的解决方案是什么?

由于

1 个答案:

答案 0 :(得分:1)

find()有2个参数,你在第一个例子中提供了3个参数。试试这个:

const users = Meteor.users.find(
  {
    'roles.__global_roles__': {$in: ['myRole']},
    $and: query
  },
  {fields: {
    username: 1,
    firstName: 1,
    lastName: 1,
    update: 1
  },
    limit: 2,
    sort: {'update.any': -1}
  }
).fetch();

iow,fields,limit和sort都是与第二个参数相同的JSON对象的一部分。