如何使用_id检索在我的收藏中创建的最新文档?
我试图通过以下方式在我的Web应用程序中实现分页:
我采用这种方法的原因是,我试图利用存储数据中的自然顺序——文档中存储的id。
获取下一组帖子的示例:
Posts.find({ _id : { $gt : lastObjectId } }, function(){
if(error){
console.log('error in get_next_posts');
} else {
response.json(results);
}
}).limit(5)
我的猫鼬模式:
var PostSchema = new mongoose.Schema({
upvotes: {type: Number, default: 0},
comments: Array,
imageURI: String,
caption: String,
location: Object,
hashtag: String
});
据我所知,Mongo的文件已经按照以下文件从最旧到最新排序:
"MongoDB在创建集合时为所有集合创建_id索引,这是_id字段上的升序唯一索引。(https://docs.mongodb.org/v3.0/core/index-single/)"
在把几篇帖子推到我的mongoDB数据库(该数据库位于Heroku上)之后,一切都很顺利(似乎是按升序发布的)
Post1 id --- 56756e2047b977030017b36d
Post2 id --- 56756e4f47b977030017b36e
Post3 id --- 56756e8447b977030017b36f
Post4 id --- 56756ef747b977030017b370
Post5 id --- 56756f3f47b977030017b371
Post6 id --- 56756f7247b977030017b372
但是在将我的第7和第8个帖子添加到集合后,我的Mongo数据库似乎突然停止了按升序对帖子进行排序,这意味着我不能再使用我以前的猫鼬查询。
我不知道为什么在我的数据库上发了几篇帖子之后,升序就停止了——有人知道为什么吗?
Post1 id --- 56756e2047b977030017b36d
Post7 id --- 5675727647b977030017b374 <-- why are they here now?
Post8 id --- 5675744847b977030017b375 <--
Post2 id --- 56756e4f47b977030017b36e
Post3 id --- 56756e8447b977030017b36f
Post4 id --- 56756ef747b977030017b370
Post5 id --- 56756f3f47b977030017b371
Post6 id --- 56756f7247b977030017b372
更新:这就是我最终通过_id获得最老帖子的原因:
Post.find({}, function(error, results) {
if(error) {
console.log('error in show');
} else {
console.log('show query successful');
response.json(results);
}
}).sort({_id:1})
“永远不要重新计算你能预计算的东西”。
维护一个单独的字段“last_added”,每当创建新帖子时,将该帖子的_id存储到该字段中。因此,使用该id检索上次添加的帖子的详细信息会更容易
不管数据库显示什么,如果你看到那些十六进制的id,它们是以数字的升序排列的
如果希望在页面中使用服务器端分页,可以这样做
Posts.find({
deleted: false
}).skip(skips).limit(limits).sort({_id:1}).exec(function (err, objects) {
callback(null, objects);
})
跳过意味着你跳过了多少页面。如果你在1页和5页需要5条记录意味着搜索下一页记录你的跳过我们将5,使前5条记录跳过
限制意味着你一次需要多少元素。
然后sort({u id:1}表示升序排序,sort({u id:-1})表示降序排序
我不认为它只能通过使用Mongo id来实现。mongo id是根据时间、连接id和其他一些东西计算的,因此不能保证它与创建时间成线性。
https://docs.mongodb.org/v3.0/reference/object-id/
我有一个名为product的MongoDB集合,其中包含以下文档,如下所示。 我想查询收款情况,只退回价格最低的单据,例如: 但当我运行聚合查询时: 它只返回一个文档。
多亏了这里的人的帮助,我成功地在我的文档中找到了两个ID,并在另一个集合中找到了他们的代表文档。我需要采取的下一步是进一步查找一个“嵌套”ID(引用另一个集合中的文档)。 其结果如下: 我希望chieftain部分是这样的(这就是没有添加'last'$lookup'的chieftain文档的样子):
如何将最新文档插入(一个独立的、没有RS的)MongoDb,而不是现有的集合? 如何在文档之后插入所有文档?
问题内容: 我的数据如下所示: 我想获取每个会话中最大的(按年龄)的所有行。因此,对于上述输入,我的输出如下所示: 因为约翰在会话= 1组中年龄最大,而汤米在会话= 2组中年龄最大。 我需要将结果导出到文件(csv),并且其中可能包含很多记录。 我该如何实现? 问题答案: 您可以尝试以下使用max属性的聚合查询:http : //docs.mongodb.org/manual/reference/
正确的解决方案是publisher_id具有12字节的BSON对象ID吗?
我有用于数据库的Spring Boot App和MongoDB。 在数据库中,我有一个集合packageholiday,其中有一些元素,这是JSON: 我的目标是什么: 正如你们所见,我在集合中有这样的数组: 所以我的问题实际上是创建API,它将从集合中返回具有指定的元素。 例如 的API 例如,对于相同的 的API 我怎样才能做到这一点?这样可能吗?