Mongo - 从另一个集合中排除一个集合中的条目find()

时间:2014-07-14 14:57:27

标签: mongodb meteor

我有一个本地集合,可以在用户查看条目时记录。它存储条目的ID和查看时间:

viewedDate = new Date();
notifications.insert({
  'viewed': this.data._id,
  'viewedDate': viewedDate
});

我想从另一个find()中排除此集合中的任何“已查看”ID(我基本上想要计算尚未查看的条目数)

如何使用notifications.find()的结果排除另一个find()的结果?如果我将notifications.find()分配给变量,它会将所有类型的东西作为对象返回。

修改

好的,所以如果我使用fetch(),我可以限制返回的内容 - 我可以在find()中执行此操作吗?

myNotes = notifications.find({}, {fields: {'viewedDate' :0, _id:0}}).fetch();

返回

[
Object
    viewed: "HqYcCma3qKseHALyv"
    __proto__: Object
]

1 个答案:

答案 0 :(得分:0)

感谢Meteor IRC中garilla_的一些宝贵帮助,我得到了它的解决方案,解决方法如下:

myViewedOffers = notifications.find({},{fields: {'viewed':1}}).fetch();
myViewedArray = myViewedOffers.map(function(viewed){return viewed.viewed});
offerCount = Offers.find({_id: {$nin: myViewedArray}}).count();