【问题标题】:NodeJS + MongoDB: Creating child objects in exiting objects?NodeJS + MongoDB:在现有对象中创建子对象?
【发布时间】:2012-06-08 22:44:45
【问题描述】:

我正在 NodeJS 上编写一个小公司档案管理系统。我使用 MongoDB 进行数据存储。我有收藏“公司”,其中每个对象都是一家公司。当然,公司有几个参数,例如“姓名”、“电子邮件”、“电话”。这些都是单字符串字段。这是我当前的“公司”对象架构。

{
    "company_name": "ACME Ltd.",
    "company_email": "acmeltd@example.com",
    "company_tel": "+49374727384",
    "_id": {
        "$oid": "4fd115b6e94a7e2408000001"
    }
}

这是我保存当前“公司”配置文件的代码:

app.post('/addcompany',function(req,res){
    db.collection("companies",function(err,collection){
        collection.insert( {
            "company_name":req.body.company_name,
            "company_email":req.body.company_email,
            "company_tel":req.body.company_tel
        });
    });
    res.redirect('/companies');
});

但是,每家公司都有几个(每家公司不同)供应商,我想将它们存储在“公司”对象中。所以,我认为我应该在我的“公司”对象中创建内部对象“供应商”,对象“供应商”必须有内部对象“supplier1”、“supplier2”等。每个“supplier1”对象应该有 6 个参数例如“supplier_name”、“supplier_tel”等。所以,我的问题是,在我的“公司”对象中存储耗材列表的最佳方式是什么?我应该如何使用 NodeJS?

更新:我已经像这样修改了我的代码,现在它可以工作了!

app.post('/addcompany',function(req,res){
    db.collection("companies",function(err,collection){
        collection.insert( {
            "company_name":req.body.company_name,
            "company_email":req.body.company_email,
            "company_tel":req.body.company_tel,
            "company_suppliers" : [
                { "supplier_name" : "jane_test", "supplier_tel" : "123456_test", "comment" : "Good supplier_test" },
                { "supplier_name" : "jessy_test", "supplier_tel" : "654321_test", "comment" : "Bad supplier_test" }
              ]
        });
    });
    res.redirect('/companies');
});

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    如果您打算将它们存储在公司对象中,我建议使用用于此目的的数据结构:数组。

    关于 MongoDB 架构设计的讨论普遍存在于您在此处做出的决定:http://www.mongodb.org/display/DOCS/Schema+Design 特别是查看“嵌入和链接”部分。

    【讨论】:

    • 你的意思是,可以存储在对象数组中吗?不是单个字符串记录,而是具有 6 个元素的真实字符串数组?
    • 是的。有点矫枉过正,但是:“Mongo 使用除了基本 JSON 类型的字符串、整数、布尔值、双精度、空值、数组和对象之外的特殊数据类型。” mongodb.org/display/DOCS/Data+Types+and+Conventions
    • 让我澄清一下:“有点矫枉过正”,我的意思是我的回答矫枉过正。并不是说 Mongo 提供了太多的类型。我只是想从他们的网站上引用一些东西作为证据,而不是我自己能够在 Mongo 中存储数组的经验。
    • 道森,谢谢。我已阅读您提供的手册并修改了我的代码以进行测试保存。但是,它不起作用。你能看看问题的更新吗?
    • 哦,我忘记了双引号!谢谢!
    猜你喜欢
    • 2013-11-18
    • 2016-10-19
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    相关资源
    最近更新 更多