这是我在集合中的一个文档
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完成,我的更新命令应该是什么。 ?
答案 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版中的新增功能。因此,如果您使用的是旧版本,则应考虑升级