我希望从数组中提取一些值,同时try 更新它.

    userSchema.statics.experience = function (id,xper,delet,callback) {
    var update = {
      $pull:{
        'profile.experience' : delet
      },

        $push: {
          'profile.experience': xper
        }
  };
  this.findByIdAndUpdate(id,update,{ 'new': true},function(err,doc) {
    if (err) {
      callback(err);
    } else if(doc){
      callback(null,doc);
    }
  });
};

我犯了这样的错误:

MongoError:异常:无法更新"配置文件".经验和个人资料.同时体验

推荐答案

如果需要将一个数组值替换为另一个,可以使用arrayFilters进行更新.

(at least, present in mongo 4.2.1).

db.your_collection.update(
    { "_id": ObjectId("your_24_byte_length_id") },
    { "$set": { "profile.experience.$[elem]": "new_value" } },
    { "arrayFilters": [ { "elem": { "$eq": "old_value" } } ], "multi": true }
) 

这将用"新值"替换所有"旧值"数组元素.

Mongodb相关问答推荐

使用新字段插入数据或使用 updateOne mongodb 有条件地更新

Spring Data + MongoDB GridFS 可以通过 Repository 访问吗?

通过 _id 更新一个文档(无效的 BSON 字段名称 _id)

MongoDB C# 驱动程序 2.0 InsertManyAsync 与 BulkWriteAsync

使用 mongodb 时是否需要规范化数据库?

如何根据_id删除文档?

Mocking/stubbing mongoose模型保存方法

mongodb 中的 --bindip 配置选项有什么作用?

MongoDB:设置 Windows 服务

将数据插入 MongoDB - 没有错误,没有插入

Mongoose Schema vs Mongo Validator

如何在 mongoDB 中聚合巨大的数组?

具有 AWS 云形成和自动zoom 的 Mongodb 集群

文本的 MongoID 数据类型

Mongodb 类型引用 node

带有 Java 驱动程序的 MongoDB 聚合

从 mongo 结果中删除 _id

通过 Java 执行 Mongo like Query (JSON)

通过浏览器连接mongodb?

对于社交网站(使用 Ruby on Rails 开发)来说,MongoDB 会是一个好主意吗?