有条件地查找和更新MongoDB子元素

有条件地查找和更新MongoDB子元素,mongodb,mongoose,Mongodb,Mongoose,假设我有个人有收藏夹,我想添加到他们的收藏夹列表中,但没有重复项。我用猫鼬做了以下尝试: exports.favorite = function (req, res, next) { var favoriteItem = { uid: req.params.uid, name: req.params.name, phone: req.params.phone }; Favorite.findOneAndUpdate(

假设我有个人有收藏夹,我想添加到他们的收藏夹列表中,但没有重复项。我用猫鼬做了以下尝试:

exports.favorite = function (req, res, next) {
    var favoriteItem = {
        uid: req.params.uid,
        name: req.params.name,
        phone: req.params.phone
    };

    Favorite.findOneAndUpdate(
        { cn: req.params.uid },
        { $push: { favorites: favoriteItem }},
        { safe: true, upsert: true}, function (error) {
            if (error) {
                process.stderr.write(error);
            }

            res.send('Saved successfully.');
            return next();
        });
};

如何根据uid有条件地推送收藏夹?注意,我想创建记录,如果它不存在的话,请使用upsert。

您是否尝试了$addToSet操作符?很抱歉,我应该使用$addToSet而不是$push。