0
以下结构简单(post.comments)的MongoDB:检索,筛选和排序MongoDB的嵌入式集合
{
"_id" : ObjectId("59acf254af58fa08ecbb4389"),
"title" : "no title",
"total_comments" : 4874,
"comments" : [
{
"_id" : ObjectId("59acf275af58fa08ecbb4399"),
"timestamp" : ISODate("2017-09-04T06:28:05.238Z"),
"body" : "Dummy Comment Title",
},
{
"_id" : ObjectId("59acf275af58fa08ecbb439f"),
"timestamp" : ISODate("2017-09-04T06:28:05.488Z"),
"body" : "Dummy Comment Title",
},
{ ... thousand comments more ... }
],
抓取的帖子,并忽略由于海量数据评论:
BGStream stream = await db.Streams
.Find(m => m.Id == new ObjectId(id))
.Project<BGStream>(Builders<BGStream>.Projection
.Exclude(m => m.Comments))
.FirstOrDefaultAsync();
抓取缺少通过AJAX评论(不是一个很好的解决方案):
var filter = Builders<BGStream>.Filter.Eq("_id", new ObjectId(id));
var projection = Builders<BGStream>.Projection
.Include(m => m.Comments).Slice("comments", skip: skip, limit: take);
var stream = await db.Streams
.Find(filter).Project<BGStream>(projection)
.FirstOrDefaultAsync();
问题: 我不知道如何通过时间戳对评论集合进行排序。我必须先取得最新的评论,但查询给了我最早的评论。
我在这里失踪了什么?
如果你有成千上万的,你在你的问题中提到的意见,我建议想关于分割您的文档并将注释转移到单独的集合中。这将给你更多的自由提取意见和重建文件他们想要的方式。请参阅文档中的$ lookup' – Saleem
已经考虑过了,但如果我拆分它,CRUD操作很难实现。删除链等... – creality
要实现额外的集合。 Thx Saleem。 – creality