我正试图用另一个numberlong值更新其中一个集合中的一些numberlong类型值。以下是我的收藏结构:

    {
    "_id" : ObjectId("55e57337d4c6cf80e68b1fe3"),
    "tenantId" : NumberLong(7),
    "refId" : NumberLong(20),
    "refIdentifierName" : "resourceInstanceId",
    "config" : {
        "contract" : {
            "contractLength" : "12 months",
            "startDate" : "2015-01-21T09:36:39+00:00",
            "billingFrequency" : "monthly",
            "margin" : 9,
            "endDate" : "2016-01-21T09:36:39+00:00"
        }

}

假设在这里,我试图用值7到8更新所有tenantid。
这是我正在使用的脚本:
 var cursor = db.resourceInstanceConfiguration.find();
while (cursor.hasNext()) {
  var x = cursor.next();
  x['tenantId'] = x['tenantId'].replace('7','8');
  db.resourceInstanceConfiguration.update({_id : x._id}, x);
}

获取错误:TypeError: Object NumberLong(6) has no method 'replace'

最佳答案

您可以使用以下查询来实现此目的:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

db.collectionName.update({<field>:<value>},{$set:{<field>:<New Value>}},<upsert>,<multi>);

关于mongodb - 在mongodb中查找并替换NumberLong类型字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32473358/

10-09 06:08