MongoDB-DBRef
我在使用DBRef时遇到了一些问题,请看这个案例:MongoDB-DBRef,mongodb,find,dbref,Mongodb,Find,Dbref,我在使用DBRef时遇到了一些问题,请看这个案例: db.fruit.save ({"_id" : "1" , "name" : "apple"}); db.fruit.save ({"_id" : "2" , "name" : "grape"}); db.fruit.save ({"_id" : "3" , "name" : "orange"}); db.fruit.save ({"_id" : "4" , "name" : "pineapple"}); db.basket.save ({"
db.fruit.save ({"_id" : "1" , "name" : "apple"});
db.fruit.save ({"_id" : "2" , "name" : "grape"});
db.fruit.save ({"_id" : "3" , "name" : "orange"});
db.fruit.save ({"_id" : "4" , "name" : "pineapple"});
db.basket.save ({"_id" : "1", "items" : [
{"$ref" : "fruit", "$id" : "1", "quantity" : 5},
{"$ref" : "fruit", "$id" : "3", "quantity" : 10}
]})
现在,让我们查找“篮子”集合:
> db.basket.find ()
{ "_id" : "1", "items" : [
{
"$ref" : "fruit",
"$id" : "1"
},
{
"$ref" : "fruit",
"$id" : "3"
}
] }
“数量”属性消失了?!有人知道为什么吗?还有别的选择吗
谢谢。is的语法
哪种表情(恐怖)
但我的建议是,完全抛弃dbref,只使用这样的简单结构
db.basket.save ({"_id" : "1",items:[
{item_id:"1",quantity:50},
{item_id:"3",quantity:10}
]})
这更干净,看起来像
{
"_id" : "1",
"items" : [
{
"item_id" : "1",
"quantity" : 50
},
{
"item_id" : "3",
"quantity" : 10
}
]
}
但在最后一种方法中,如何获取所有项数据,如连接?为了澄清,DBRef中支持其他字段,因为它实际上只是一个BSON对象;但是,在呈现值时,MongoDB shell隐藏除
$ref
、$id
和可选的$db
字段以外的字段。一些ODM实际上在DBRef对象中存储额外的值(原则使用类鉴别器值来实现)。也就是说,如果总是引用同一数据库和集合中的对象,那么没有DBRef肯定会更好,因为在这种情况下,$ref
和$db
是无用的开销。
{
"_id" : "1",
"items" : [
{
"quantity" : 5,
"item" : {
"$ref" : "fruit",
"$id" : "1"
}
},
{
"quantity" : 10,
"item" : {
"$ref" : "fruit",
"$id" : "3"
}
}
]
}
db.basket.save ({"_id" : "1",items:[
{item_id:"1",quantity:50},
{item_id:"3",quantity:10}
]})
{
"_id" : "1",
"items" : [
{
"item_id" : "1",
"quantity" : 50
},
{
"item_id" : "3",
"quantity" : 10
}
]
}