mongodb mongo store文档Meta数据

e4eetjau  于 2023-10-16  发布在  Go
关注(0)|答案(1)|浏览(99)

在文档本身中还是在单独的集合中,哪种方式是存储文档Meta数据的最佳方式?
我正在处理一个包含以下数据的集合:

{
   status: {
       joined: Date,
       retired: [{
           on: Date,
           comment: String,
           reinstated: {
               on: Date,
               comment: String
           }
       }],
       suspended: [{
           on: Date,
           comment: String,
           reinstated: {
               on: Date,
               comment: String
           }
       }],
       //.....

我需要记录何时以及谁执行了这些更改,但我不确定是否应该将元数据添加到每个元素中,还是应该使用Log这样的集合。

// Log collection
{
    by: UserId,
    on: Date,
    verb: String,
    object: ObjectId,
    comment: String
}
z6psavjg

z6psavjg1#

我将Meta数据存储在文档中,原因如下:
1.如果您将文档及其元数据放在一起,它看起来会更自然。
1.当你加载文档时,你可以很容易地从文档中提取1 e0f1x元数据,以在不需要元数据时保持文档的简洁:
db.items.find({ },{ metadata:});
1.您可以使用$slice轻松地使用分页来检索元数据:
db.items.find({},{metadata:{$slice:[20,10]}})//跳过20,最多10
但是,也要记住:
1.文件大小限制为16 MB。如果您计划拥有大量元数据,那么最好使用单独的集合。但我通常从嵌入数据开始,如果数据变得太大,然后将其迁移到一个单独的集合。
2 .如果您需要在某个地方显示所有文档中的元数据,比如在网格中,那么加载它、应用分页等操作可能会很麻烦。

相关问题