MongoDB - 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 ({"_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"
}
] }
Атрибут "количество" исчез? Кто-нибудь знает почему? Есть ли альтернатива?
Благодарю.
1 ответ
Решение
Синтаксис для dbref
{ $ref : <collname>, $id : <idvalue>[, $db : <dbname>] }
Но вы добавили неподдерживаемое поле количества внутри dbref. Это проблема. возьми это снаружи
db.basket.save ({"_id" : "1", "items" : [
{"quantity" : 5 , item : {"$ref" : "fruit", "$id" : "1"}},
{"quantity" : 10, item : {"$ref" : "fruit", "$id" : "3"}}
]})
какой вид выглядит (страшно)
{
"_id" : "1",
"items" : [
{
"quantity" : 5,
"item" : {
"$ref" : "fruit",
"$id" : "1"
}
},
{
"quantity" : 10,
"item" : {
"$ref" : "fruit",
"$id" : "3"
}
}
]
}
Но мой совет, вообще откажитесь от 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
}
]
}