我想在获取Object时从查询中排除对象数组。
mixins: [ReactMeteorData],
getMeteorData() {
// Standard stuff
var selector = {};
var handle = Meteor.subscribe('videos', selector);
var data = {};
// Return data = OK!
data.video = Videos.findOne({ _id: this.props._id });
// Fetch objects with $lte _id to exclude, Return id_ field array = OK!
data.excnext = Videos.find({ votes: data.video.votes, _id: {$lt: data.video._id}},{fields: {_id:1}},{sort: {_id: 1},limit:50}).fetch();
// Fetch objects by Votes, Exclude array of objects with $nin = NOT OK!
data.next = Videos.findOne({ _id: { $ne: this.props._id, $nin:data.excnext }, votes: { $gte: data.video.votes}},{ sort: { votes: 1, _id: 1 }});
return data;
},
为什么$ nin不能按预期工作? 在获取数组或使用$ ini
返回时,我不确定是否出错了记录的示例= data.excnext
[ { _id: 'A57WgS6n3Luu23A4N' },
{ _id: 'JDarJMxPAnmeTwgK4' },
{ _id: 'DqaeqTfi8RyvPPTiD' },
{ _id: 'BN5qShBJzd6N7cRzh' },
{ _id: 'BSw2FAthNLjav5T4w' },
{ _id: 'Mic849spXA25EAWiP' } ]
使用此堆栈在我的第一个应用上磨削。我的核心设置是Meteor,Flow-router-ssr,React-layout,MongoDB,React。我想要做的是通过投票获取下一个对象,问题是有时几个对象具有相同的投票数,所以我需要按id排序并排除不需要的对象。
//❤和平
答案 0 :(得分:2)
在这种情况下,$nin
需要一个id字符串数组,而不是一个具有_id
字段的对象数组。试一试:
data.excnext = _.pluck(Videos.find(...).fetch(), '_id');
使用pluck提取一系列ID,然后您可以在后续findOne
调用中使用这些ID。