У меня возникли некоторые проблемы с DBRef, посмотрите этот случай:MongoDB - 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"
}
] }
"количество" атрибут исчезал?! Кто-нибудь знает почему? Есть ли альтернатива?
Спасибо.
, но с последним подходом, как я могу получить все данные элементов, например, присоединиться? – jtomasrl
В MongoDb нет соединения –
Просто для пояснения, дополнительные поля поддерживаются внутри DBRef, так как это действительно просто объект BSON; однако оболочка MongoDB скрывает поля, отличные от '$ ref',' $ id', и необязательное поле '$ db' при рендеринге значения. Некоторые ODM фактически хранят дополнительные значения в объекте DBRef (Doctrine делает это с помощью значений дискриминатора класса). Тем не менее, вам, безусловно, лучше без DBRef, если вы всегда ссылаетесь на объекты в одной базе данных и коллекции, так как '$ ref' и' $ db' являются бесполезными накладными расходами в этом случае. – jmikola