簡體   English   中英

在MongoDb中,有一種方法可以從多個文檔中獲取最后1000個數組元素

[英]In MongoDb is there a way to get last 1000 array elements from multiple documents

給定以下Mongo文檔模型:

文件模型

集合中的每個文檔代表1個小時的資源監視。 在每個文檔中,都有摘要的集合。 還可以將摘要的數量記為整數,因為它可以使生活更輕松。

有沒有一種有效的方法來查詢集合並僅返回最近的1000個摘要作為聚合列表?

還是一種有效的方法來查詢集合並返回包含最近的1000個摘要的文檔數?

每個文檔中的摘要數量將有所不同,但是一個文檔中的摘要數量絕不能超過1000。

編輯:我應該提到我正在將mongo與.NET驅動程序配合使用,因此我可以使用LINQ。

您是否看過Mongo聚合? 如果您想返回1000個最新的摘要,可以使用$ unwind和$ replaceRoot操作,這是我嘗試過的shell查詢:

db.getCollection('test').aggregate([
{$match : {your timestamp match query here}},
{$sort : {"timestamp": -1}},
{$unwind : "$summaries"},
{$limit : 1000},
{$replaceRoot: {newRoot: "$summaries"}}
])

聚合管道開始處的match操作非常重要,因為僅在第一步使用索引。 如果您放松整個收藏,您的表現可能會急劇下降。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM