2013-09-13 5 views
0

У меня возникли проблемы с заполнением данных, чтобы я мог выполнить некоторые тесты с ним.Получение пустых наборов данных при создании тестовых данных [MongoDB]

Ниже мой код:

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)}}) 
} 

Идея заключается в том, что она создает 1000 компаний, и для каждой компании он выбирает 50 случайных сотрудников из 500, которые доступны (я понимаю, этот метод может привести к дублированию сотрудников , и это прекрасно). Затем он выбирает одного генерального директора для компании из 10 доступных.

Коллекция создается правильно, и название компании будет сгенерировано правильно, но список сотрудников пуст, а значение CEO пусто.

Выполняется запрос на основе динамического имени ({"company.company": "Компания" + i}) не разрешено или я просто что-то испортил?

+1

Почему вы ищете для 'companies.company', когда имя поля было просто' company'? То же самое для нескольких других мест. Имя коллекции - 'компании', но вам не нужно повторять это в запросе/обновлениях. – WiredPrairie

+0

Я думал, что видел несколько примеров, где это было сделано. Является ли company.company эквивалентом компании? – Ryan

+1

См. Ответ ... решил объяснить, чем в комментариях. :) – WiredPrairie

ответ

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)}}) 
} 
Смежные вопросы