У меня есть эта модель
Моя модель
var mySchema = new mongoose.Schema({
user_id: {type: Schema.Types.ObjectId, ref: 'users'},
warranter: [{
files:[{
"file":{type : [{path:String}], default:[]},
"docId": {type: Schema.Types.ObjectId, ref: 'documents'},
"typeDoc": Schema.Types.ObjectId,
status:{type: Number, default: 1},
}]
}],
}
, {collection: 'my_files'});
Это пример данных
Пример
{
"_id" : ObjectId("5c87c445935cfe2dbc07501d"),
"user_id" : ObjectId("5c81070a4f8b271556902533"),
"warranter" : [
{
"files" : [
{
"file" : [
{
"path" : "5c81070a4f8b271556902533/documents/my_file.png",
"_id" : ObjectId("5c88e3766aed583e107c0120")
}
],
"status" : 1,
"docId" : ObjectId("5b85505680cf16043756ef83"),
"typeDoc" : ObjectId("5bae100efe6bef36fbc1ae38"),
},
{
"file" : [
{
"path" : "5c81070a4f8b271556902533/documents/my_file2.png",
"_id" : ObjectId("5c88e3766aed583e107c0121")
}
],
"status" : 0,
"docId" : ObjectId("5b85505680cf16043756ef83"),
"typeDoc" : ObjectId("5bae100efe6bef36fbc1ae38"),
}
],
"_id" : ObjectId("5c87e088b2ba003da5a0d946")
}]
}
Я хочу обновить документ, который имеет статус: 1, и обновить его до 0 с моими параметрами: user_id, warranter._id, warranter.files. $. DocId, warranter.files. $. TypeDoc
Я пробовал этот запрос, но он не работал,
var req = { 'user_id': "5c81070a4f8b271556902533",
'warranter._id':"5c87e088b2ba003da5a0d946",
'cf_warranter.$.files': { $elemMatch: {docId: "5b85505680cf16043756ef83",
typeDoc:"5bae100efe6bef36fbc1ae38",
status:1} } }
var data = {"warranter.$.files.status": 0}
my_files.update(req, {$set: data}, {
runValidators: true, multi: true
}, callback);