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