mongodb文档结构。值作为属性名?

mongodb文档结构。值作为属性名?,mongodb,Mongodb,比较以下两个文档,哪种结构更好?属性“值”通常是不同集合中不同文档的id。 我应该避免使用第一种结构吗 { $type : $value } 其中类型属性名称可以有多种形式。2个示例文档是: doc 1: { "foo" : "id1"} doc 2: { "bar" : "id2"} 或 {“类型”:$type,value:$value} 和Exmaple: doc 1: { type: "foo", value: "id1" } doc 2: { type: "bar", value

比较以下两个文档,哪种结构更好?属性“值”通常是不同集合中不同文档的id。 我应该避免使用第一种结构吗

{ $type : $value }
其中类型属性名称可以有多种形式。2个示例文档是:

doc 1:  { "foo" : "id1"}
doc 2:  { "bar" : "id2"}
或 {“类型”:$type,value:$value} 和Exmaple:

doc 1: { type: "foo", value: "id1" }
doc 2: { type: "bar", value: "id2" }
在第一个示例中,搜索查询必须是{“foo”:{$exists:true} 而在第二个{type:“foo”}看起来更简单、更灵活,因为我可以很容易地与数组{type{$in:[]}}

比较您的第二个结构

doc 1: { type: "foo", value: "id1" }
doc 2: { type: "bar", value: "id2" }
是定义文档的正确方法建议不要在
Mongo
文档中使用动态值作为键。如果使用动态键,则很难查询此类键。在使用上述给定结构时,您可以使用
类型
轻松查询,如下所示:

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

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