从MongoDB中的最新文档中获取给定字段

时间:2016-06-12 20:32:41

标签: javascript node.js mongodb meteor

我正在尝试将最新文档的_id字段输入到集合中。

我创建了一个名为Rooms:

的集合
Rooms = new Meteor.Collection('rooms');

此代码应将最新项目限制为一个:

Rooms.find({}, {fields: {'_id':1}}).sort({_id:-1}).limit(1)

相反,我得到了

Uncaught TypeError: Rooms.find(...).sort is not a function(…)

我哪里错了?

解决方案(感谢@aedm

var roomID = Rooms.findOne({}, {fields: {_id: 1}, sort: {_id: -1}});
return roomID._id.toString();

2 个答案:

答案 0 :(得分:1)

Collection.find返回游标,而不是数组。游标没有sort方法。请尝试以下方法:

Rooms.findOne({}, {fields: {_id: 1}, sort: {_id: -1}});

http://docs.meteor.com/api/collections.html#Mongo-Collection-find

修改

正如@MichelFloyd指出的那样,Meteor生成的_id 按时间顺序排序,就像MongoDB自己创建的那样。要按创建日期排序,您必须将这些时间戳存储在您的收藏中。

答案 1 :(得分:0)

会评论,但还没有代表。您可以将id作为字符串获取:Rooms.findOne({},{fields:{_ id:1},sort:{_ id:-1}})._ id;