我想在保留集合中文档位置的同时编辑子文档。
我使用findOne检索文档,然后使用Object.assign编辑文档子文档。 然后,保存文档。
我在这里阅读了有关职位的信息,但是找不到适用于我的情况的Mongoose find/update subdocument
async editSecondLevel (req, res, next) {
var body = _.pick(req.body, ['_id', 'name', 'icon', 'category'])
FirstLevel.findOne({ 'secondLevels._id': body._id }, function (err, firstLevel) {
if (err) return next(err);
Object.assign(firstLevel.secondLevels.id(body._id), body)
firstLevel.save().then(() => {
return res.send(firstLevel)
}).catch((e) => {
res.status(400).send(e)
})
}).catch((e) => {
res.status(400).send(e)
})
}
有时,它保持文档(firstLevel)的位置。有时候,不是。
我在这里MongoDB field order and document position change after update中读到,“如果您的更新使文档的大小超出了最初分配的大小,则该文档将被移至集合的末尾”
是否仍然可以保持位置?
预先感谢;)