0

我在尝试填充数据以便可以使用它执行一些测试时遇到问题。

以下是我的代码:

for(i=0; i < 1000; i++){
    db.companies.insert({company: "Company"+i, employees: [""], CEO: ""})

    for(j=0; j < 50); j++){
        db.companies.update({"companies.company": "Company"+i}, {$push: {"companies.employees":
        "Employee"+Math.floor(Math.random()*500)}}, false, true)
    }

    db.companies.update({"companies.company": "Company"+i}, {$set: {"companies.CEO"
    : "CEO"+Math.floor(Math.random()*10)}})
}

它的想法是创建 1,000 家公司,并为每家公司从 500 名可用的员工中随机选择 50 名(我意识到这种方法可能会导致员工重复,这很好)。然后,它会从 10 位可用的 CEO 中为公司选择一位。

该集合似乎已正确创建,并且将正确生成公司名称,但员工列表为空且 CEO 值为空。

是否不允许基于动态名称 ({"companies.company": "Company"+i }) 进行查询,或者我只是在某个地方搞砸了?

4

1 回答 1

3

companies由于您的文档是结构化的,因此从您的查询中删除额外的内容应该可行:

{ 
    Company: "Company1",
    Employees: [],
    CEO: ""
}

通过使用以下语法:

db.companies.update({ "companies.company": "company1" }, ....)

你需要这样的文件:

{ 
    Companies: {     
        Company: "Company1",
        Employees: [],
        CEO: ""
    }
}

通过使用db.companies.mongoDBFunction,您已经指定了集合companies

这是应该工作的代码:

for(var i=0; i < 1000; i++){
    var name = "Company" + i;
    db.companies.insert({company: name, employees: [""], CEO: ""});

    for(var j=0; j < 50; j++){
        db.companies.update({"company": name }, {$push: {"employees":
        "Employee"+Math.floor(Math.random()*500)}}, false, true)
    }

    db.companies.update({"company": name}, {$set: {"CEO"
    : "CEO"+Math.floor(Math.random()*10)}})
}
于 2013-09-13T21:45:03.757 回答