我怎样才能在mongoose中找到更新时推送的子文档id?

to94eoyn  于 2023-01-13  发布在  Go
关注(0)|答案(1)|浏览(98)

我正在尝试查找使用doc.updateOne插入到文档数组中的_id子文档。如何查找新推送的_id子文档?
这是我尝试过的,但是我担心当太多的更新发生时,我会得到一个错误的_id

await model.updateOne({
    _id: docId
}, {
    $push: {
        arr: {a: 3, b: 4}
    }
});

const freshData = await model.findById(docId);
const id = freshData.arr[freshData.arr.length - 1];

console.log(id); // _id will be printed (But what if another $push happen before findById?)
clj7thdc

clj7thdc1#

我找到答案了here
我只需要在更新文档并将ObjectId分配给新插入的子文档_id之前创建ObjectId

const _id = new ObjectId();

await model.updateOne(
    { _id: docId },
    {
        $push: {
            arr: {_id, a: 3, b: 4}
        }
    });

console.log(_id); // _id will be printed

相关问题