什么应该是mongodb update shell命令

时间:2015-12-25 19:21:19

标签: javascript mongodb mongodb-query

这是我在集合中的一个文档

this

我希望这就像

var obj = { 
conn : null,
first : function(thisIdentity) {
    "use strict";
    var mySelf = this;
    $(document).on('click', thisIdentity, function(e) {
    e.preventDefault();
    $.ajax ({ 
        url : some value,
        // other parameters
        success : function() {
            mySelf.conn = new Connection(data.user_id, "127.0.0.1:80");
        }
    });
},
second : function(thisIdentity) {
    "use strict";
    var mySelf = this;
    $(document).on('click', thisIdentity, function(e) {
        e.preventDefault();
        $.ajax ({ 
            url : some value,
            // other parameters
            success : function() { 
                // now you can access the connection with mySelf.conn
            }
        });
    }
};

这可以通过shell完成,我的更新命令应该是什么。 ?

1 个答案:

答案 0 :(得分:1)

实际上你需要的不仅仅是简单的命令。

您需要使用.find()方法通过.forEach()方法循环返回光标,然后创建一个新对象" kids"使用字段'名称及其价值。接下来要做的是$unset所有字段,并使用$set运算符创建新字段。当然,为了达到最高效率,您可以使用"bulk" 1 操作。

{
        "_id" : ObjectId("567d99bcbc08a0817a1b06dd"),
        "KIDS" : {
                "KIDS_M_0_2" : "",
                "KIDS_F_0_2" : "",
                "KIDS_U_0_2" : "Y",
                "KIDS_M_3_5" : "",
                "KIDS_F_3_5" : "",
                "KIDS_U_3_5" : "Y",
                "KIDS_M_6_10" : "",
                "KIDS_F_6_10" : "",
                "KIDS_U_6_10" : "",
                "KIDS_M_11_15" : "",
                "KIDS_F_11_15" : "",
                "KIDS_U_11_15" : "",
                "KIDS_M_16_17" : "",
                "KIDS_F_16_17" : "",
                "KIDS_U_16_17" : "Y"
        }
}

完成此操作后,您的文档如下所示:

Bulk()

MongoDB 3.2 deprecates var operations = []; db.collection.find().forEach(function(doc) { var kids = {}; for(var key in doc) { if(!key.startsWith('_id') && Object.prototype.hasOwnProperty.call(doc, key)) { kids[key] = doc[key]; var unset = {}; unset[key] = ''; operations.push( { 'updateOne': { 'filter': { '_id': doc._id } , 'update': { '$unset': unset } } } ); } operations.push( { 'updateOne': { 'filter': { '_id': doc._id } , 'update': { '$set': { 'KIDS': kids } } } } ); } operations.push( { 'ordered': true } ); }) db.collection.bulkWrite(operations) 及其相关方法,并提供.bulkWrite()方法。

{{1}}

1. Bulk() API是2.6版中的新增功能。因此,如果您使用的是旧版本,则应考虑升级