我在尝试填充数据时遇到了麻烦,因此我可以使用它来执行一些测试。
以下是我的代码:
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”:“公司”+我})进行查询不允许,或者我只是搞砸了某个地方?
答案 0 :(得分: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)}})
}