Collection.find()用于对象内的数组

时间:2015-04-12 01:48:37

标签: node.js mongodb meteor mongoose

我有一个Meteor应用程序,其中包含一组聊天组。此集合中的每个文档都如下所示:

{groupname: 'name', whitelist: ['person1', 'person2', 'person3'], messages:['message1', 'message2', 'message3']}

要向每个人显示他们所属的群组,我需要一个页面,其中包含他们允许进入的群组列表。如何使用find()命令返回所有文档其白名单数组包含用户名?

2 个答案:

答案 0 :(得分:0)

这样的事情:

ChatGroups.find({whitelist: Meteor.user().username});

这假定username是您要匹配的属性。在这种情况下,你不需要做任何特殊的事情来搜索数组 - mongo将做正确的事情(将username与每个whitelist的每个元素进行比较并返回那些匹配的文档。 / p>

答案 1 :(得分:0)

要按数组项搜索MongoDB,请使用$in运算符:

ChatGroups.find({
   whitelist: {
      $in: [Meteor.user()._id]
   }
});

参考:Comparison Query Operators > $in