mongodb获取最后插入的文档

时间:2016-03-23 16:31:16

标签: mongodb meteor

此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});
});

1 个答案:

答案 0 :(得分:2)

我要假设昂贵的你的意思是执行时间。在这种情况下,您需要createdAt字段,createdAt上的辅助索引,并使用findOne()语句。要在集合的createdAt上创建索引,请执行以下操作:

myCol._ensureIndex({ createdAt: -1 });

然后在你的发布中:

Meteor.publish('myCol', function () {
  return MyCol.find({userId: this.userId}, { sort: { createdAt: -1 } });
});