为什么我的collection.find()在流星中不起作用但在robomongo中工作?

时间:2015-06-11 17:17:31

标签: mongodb meteor

我有一个出版物应该返回所有匹配_id数组的用户。在这里查询:

Meteor.users.find({
            '_id': { $in: myArray}},{
                'profile.name':1,
                'profile.description':1,
                'profile.picture':1,
                'profile.website':1,
                'profile.country':1}
            );

当我在Robomongo(mongo浏览器)中运行它时,它可以工作。但我的出版物只返回undefined。当我在出版物中console.log(myArray);时,我会得到类似['FZ78Pr82JPz66Gc3p']的内容。这是我在我的工作Robomongo查询中粘贴的内容。

备选问题:如何从Collection.find()结果中获得更好的反馈(日志)?

1 个答案:

答案 0 :(得分:3)

看起来您正试图在find中指定字段,您可以这样做:

var options = {
  fields: {
    'profile.name': 1,
    'profile.description': 1,
    'profile.picture': 1,
    'profile.website': 1,
    'profile.country': 1
  }
};

Meteor.users.find({_id: {$in: myArray}}, options);

但是,如果在发布功能中使用此功能,我强烈建议仅使用顶级字段,如下所示:

Meteor.users.find({_id: {$in: myArray}}, {fields: {profile: 1}});

有关原因的详细信息,请参阅this question

对于第二个问题,您可以通过调用游标上的fetch来查看游标返回的文档。例如:

console.log(Posts.find({_id: {$in: postIds}}).fetch());