此Meteor代码尝试查找集合中的最后一个文档。
.find({userId: this.userId}, {sort: {createdAt: -1}, limit: 1});
但由于所有文件都是按时间顺序排列的,我想删除createdAt字段,所以一旦“删除”,是否有“不昂贵”的方式只返回最后输入的文件?感谢
{userId: 'someId', info: 'someInfo'}
myCol.findLast().info; <--- my wish list
文档中的$last(aggregation)首先对其他内容进行排序
修改
试图利用斯蒂芬伍兹提出的想法;
server.js
MyCol._ensureIndex({createdAt: -1});
MyCol.before.insert(function (userId, doc) {
doc.userId = userId;
createdAt = Date.now();
});
Meteor.publish('myCol', function () {
return MyCol.findOne({userId: this.userId});
});
答案 0 :(得分:2)
我要假设昂贵的你的意思是执行时间。在这种情况下,您需要createdAt
字段,createdAt
上的辅助索引,并使用findOne()
语句。要在集合的createdAt
上创建索引,请执行以下操作:
myCol._ensureIndex({ createdAt: -1 });
然后在你的发布中:
Meteor.publish('myCol', function () {
return MyCol.find({userId: this.userId}, { sort: { createdAt: -1 } });
});