mongodb文件结构。作为财产名称的价值?

时间:2015-06-24 06:39:12

标签: mongodb

比较以下2个文件哪个结构更好?财产"价值"通常是不同集合中不同文档的id。 我应该避免使用第一种结构吗?

{ $type : $value }

其中type属性名称可以有各种形式。 2个示例文档将是:

doc 1:  { "foo" : "id1"}
doc 2:  { "bar" : "id2"}

或     {" type" :$ type,value:$ value} 和exmaples:

doc 1: { type: "foo", value: "id1" }
doc 2: { type: "bar", value: "id2" }

在第一个示例中,搜索查询必须是{" foo":{$ exists:true}} 而在第二个{类型:" foo"看起来更简单灵活,因为我可以轻松地与数组进行比较{type {$ in:[]}}

1 个答案:

答案 0 :(得分:0)

你的第二个结构

doc 1: { type: "foo", value: "id1" }
doc 2: { type: "bar", value: "id2" }

是定义文档的正确方法。 建议不要将动态值用作Mongo文档中的键。如果使用动态密钥,则很难查询此类密钥。使用上述给定结构时,您可以使用typevalue轻松查询,如下所示:

db.collection.find({"type":"foo"}) 

db.collection.find({"type":{"$in":["foo","abc"]}})