У меня проблема, которая считается такой простой. Даны вложенные документы, которые имеют поле expires. Один пример документа:
{
_id: ObjectId(),
stuff: [
{
name: 'egg',
expires: ISODate("2019-07-19T12:52:56.163Z")
},
{
name: 'potato',
expires: ISODate("2019-07-19T12:52:56.163Z")
}
]
}
Я подумал, что мог бы использовать такой запрос:
db.collection.update({"_id": ObjectId("578411d30af77c226c52b940")}, {
"$pull": {
"stuff.expires": { "$lt": ISODate() }
}
});
, возможно, с возможностью применить его к нескольким документам одновременно, но даже при попытке обновленияодин документ, с которым я столкнулся с этой ошибкой:
Невозможно использовать часть (expires) (stuff.expires) для прохождения элемента
Я перепробовал массу изменений, но я не смог найти способ сделать эту работу или подобный пример (который кажется довольно странным при поиске mongodb).
Если нет способа обновить несколько документов одновременно,Я был бы счастлив, если бы был способ удалить все просроченные элементы из одного документа в атомарном запросе. Запрос не должен работать со старыми версиями mongodb - последняя версия в порядке.