我可以在mongodb集合中放置许多密钥吗

我可以在mongodb集合中放置许多密钥吗,mongodb,Mongodb,我想在mongodb中存储一个类似散列的值 有两种收集方式,个人和工作。一个人有一些有数量的作品。包含更多详细信息的其他集合中的工作存储(可能引用其他集合) 一个人(吉姆)有一份工作(a)和三份工作(b) 如果我储存了上述人员的工作财产。人员密钥路径将包括工作的id,并不断增加。这是正确的方法吗?我不能完全确定我是否理解这里的实际问题。你是在征求关于你的模式设计的第二个意见吗?如果是的话,这是我的: 像您这样使用文档id:s保持集合之间的关系绝对没有错。有时,这是正确的(也是唯一的)方法,尽管您

我想在mongodb中存储一个类似散列的值

有两种收集方式,个人和工作。一个人有一些有数量的作品。包含更多详细信息的其他集合中的工作存储(可能引用其他集合)

一个人(吉姆)有一份工作(a)和三份工作(b)


如果我储存了上述人员的工作财产。人员密钥路径将包括工作的id,并不断增加。这是正确的方法吗?

我不能完全确定我是否理解这里的实际问题。你是在征求关于你的模式设计的第二个意见吗?如果是的话,这是我的:

像您这样使用文档id:s保持集合之间的关系绝对没有错。有时,这是正确的(也是唯一的)方法,尽管您必须自己承担维护关系/引用的责任,因为您可能知道,mongoDB不会帮助您

不过,仅仅通过查看上面的示例模式来理解您的用例对我来说有点困难,但我注意到的是works对象

我认为使用数组会更好-可能是这样:

 works: [
        { "4d772583c186233352000002": 1 },
        { "4d772583c186233352000003": 3 }
 ]
这样,mongo将更好地支持您维护引用,例如使用$pull和$push操作符

但是,我还想知道如何使用外来id引用作为工作引用对象中的键。对于更多的惯用对象,请考虑如下:

works : [
     { work_id: "4d772583c186233352000002", quantity: 1 },
     { work_id: "4d772583c186233352000003", quantity: 3 }
]

这有用吗?

我担心钥匙是可变的。如果我有大数据。mongodb会减速吗?我无法想象如何为它们建立索引。我不明白你说的键是可变的是什么意思。显然,输入的数据越多,mongo的速度就越慢。但是,在这之前,您可以拥有大量此类文档(除非您有非常具体的性能要求)。只需确保查询将使用索引即可。关于索引,如果您的意思是希望查询持有特定作品引用的人员,那么可以通过在Rich Web project中的“works.works\u id”
db.persons.ensureIndex({“works.works\u id”:1})
上添加索引来轻松实现。我们需要将数据从服务器序列化到客户端。第一种数据样式将成为字典。否则,我们必须处理数组和一些字典。
works : [
     { work_id: "4d772583c186233352000002", quantity: 1 },
     { work_id: "4d772583c186233352000003", quantity: 3 }
]