Обновление поля во вложенном поддокументе MongoDB - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь обновить флаг IsActive внутри объекта функции, однако он глубоко вложен в объекты компаний и фабрик.Попытка использовать $ бесполезна, так как она не работает с вложенными вложенными документами.Кто-нибудь нашел способ работать с этим ??? Я ожидаю, что флаг IsActive будет изменен, так как сейчас он может быть достигнут только.Я пробовал:

  • $$

  • Элемент списка

  • Размещение $ на различныхточки т.е. фабрики.Функции. $. IsActive -Конкатенация в functionIds

{function deleteFunction(companyId, factoryId, functionId) {
    return Companies.update({
        "CompanyId": companyId,
        "Factories.FactoryId": factoryId,
        "Factories.Functions.FunctionId": functionId,
    }, {"$set": {"Factories.$.Functions.IsActive": false}}
    ).then(function (result)  {
        console.log("Reached", result);
        return result
    }).catch(function (err) {
        logger.log(err);
    });
}}

let functionsSchema = new mongoose.Schema({
    FunctionId: Number,
    Name: String,
    ADGroup: String,
    IsActive: Boolean,
    DateCreated: {
        type: Date,
        default: Date.now
    },
    DateModified: {
        type: Date,
        default: Date.now
    }
});

let factorySchema = new mongoose.Schema({
    FactoryId: Number,
    Name: String,
    ADGroup: String,
    IsActive: Boolean,
    DateCreated: {
        type: Date,
        default: Date.now
    },
    DateModified: {
        type: Date,
        default: Date.now
    },
    Functions: [functionsSchema]
});

let companySchema = new mongoose.Schema({
    CompanyId: Number,
    Name: String,
    IsActive: Boolean,
    DateCreated: {
        type: Date,
        default: Date.now
    },
    DateModified: {
        type: Date,
        default: Date.now
    },
    Employees: [employeeSchema],
    Factories: [factorySchema]

});
...