首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB - DBRef

MongoDB - DBRef
EN

Stack Overflow用户
提问于 2012-01-03 21:53:45
回答 1查看 6.2K关注 0票数 0

我在使用DBRef时遇到了一些麻烦,看看这个例子:

代码语言:javascript
复制
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}
]})

现在,让我们找到“篮子”集合:

代码语言:javascript
复制
> db.basket.find ()
{ "_id" : "1", "items" : [
    {
        "$ref" : "fruit",
        "$id" : "1"
    },
    {
        "$ref" : "fruit",
        "$id" : "3"
    }
] }

"quantity“属性消失了?!有人知道为什么吗?有没有别的选择?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-03 22:32:46

dbref的语法为

代码语言:javascript
复制
  { $ref : <collname>, $id : <idvalue>[, $db : <dbname>] }

但是您在dbref中添加了不支持的数量字段。这就是问题所在。把它拿出去

代码语言:javascript
复制
db.basket.save ({"_id" : "1", "items" : [
    {"quantity" : 5 , item : {"$ref" : "fruit", "$id" : "1"}},
    {"quantity" : 10, item : {"$ref" : "fruit", "$id" : "3"}}
]})

哪种看起来(可怕)

代码语言:javascript
复制
{
    "_id" : "1",
    "items" : [
        {
            "quantity" : 5,
            "item" : {
                "$ref" : "fruit",
                "$id" : "1"
            }
        },
        {
            "quantity" : 10,
            "item" : {
                "$ref" : "fruit",
                "$id" : "3"
            }
        }
    ]
}

但我的建议是,完全抛弃dbref,只使用如下所示的简单结构

代码语言:javascript
复制
db.basket.save ({"_id" : "1",items:[
                        {item_id:"1",quantity:50},
                        {item_id:"3",quantity:10}
                ]})

这要干净得多,看起来就像

代码语言:javascript
复制
{
    "_id" : "1",
    "items" : [
        {
            "item_id" : "1",
            "quantity" : 50
        },
        {
            "item_id" : "3",
            "quantity" : 10
        }
    ]
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8713304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档