【问题标题】:Best way to store a single independent document in mongodb在 mongodb 中存储单个独立文档的最佳方法
【发布时间】:2021-11-11 12:25:16
【问题描述】:

我有 MERN 应用程序,我的数据库中有一堆集合,现在我想存储一个代表订单的对象:

假设我在一个 "items" 集合中有 "item1, item2, item3",每一个都可以是任何东西;

我只需要 Id 的(引用它们),我希望用户选择他们的订单,以便我知道显示项目的正确方式(不是数据库中的订单,订单用于单独目的) 我认为最好的方法是拥有一个文档,其中包含订单数据,但是每个文档都应该在一个集合中,所以问题是,创建一个集合只是为了在其中存储一个文档是否正确?还是有更好的方法?

这是我要存储的文档的示例:(数组索引是它们的顺序)

{
    items: [{itemId:xxx, otherprops...}, {itemId: yyy, otherprops...}]
}

items 集合可以有 100 多个项目,因此更改该集合中的顺序不是我需要的正确选项。

【问题讨论】:

  • 你想存储每个用户的订单,每个订单都包含物品吗?
  • @mohammadNaimi 不,所有用户的通用顺序,由管理员设置,否则我会选择集合

标签: database mongodb mongoose


【解决方案1】:

创建一个集合只存储单个文档是否正确 它

如果您查看 mongodb 中的 admin 数据库,您会发现它所做的事情与我认为您正在尝试做的事情相似。有一个system.version 集合。在那个集合中,我看到了包含类似设置信息的文档。例如,featureCompatibility 属性实际上存储为带有 _id:“featureCompatibility”的文档。分片身份信息也作为单个文档存储在此集合中:

{
  "_id" : "shardIdentity",
  "clusterId" : ObjectId("2bba123c6eeedcd192b19024"),
  "shardName" : "shard2",
  "configsvrConnectionString" : "configDbRepl/alpha.example.net:28100,beta.example.net:28100,charlie.example.net:28100" }

system.version 集合中只有一个这样的文档。您可以很好地创建自己的设置集合来存储这些定制文档。这当然不是闻所未闻的。

查看官方 mongodb 文档中的“Shard Aware”部分,了解这种类型的实践:

https://docs.mongodb.com/manual/release-notes/3.6-upgrade-sharded-cluster/#prerequisites

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2020-07-09
    相关资源
    最近更新 更多