比较以下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:[]}}
答案 0 :(得分:0)
你的第二个结构
doc 1: { type: "foo", value: "id1" }
doc 2: { type: "bar", value: "id2" }
是定义文档的正确方法。 建议不要将动态值用作Mongo
文档中的键。如果使用动态密钥,则很难查询此类密钥。使用上述给定结构时,您可以使用type
或value
轻松查询,如下所示:
db.collection.find({"type":"foo"})
或
db.collection.find({"type":{"$in":["foo","abc"]}})