删掉一个字段
删除某条数据的field1字段:db.collection.update({"_id" : "10001"}, {$unset: {"field1":1}});
批量删除field1字段:db.collection.update( {"field1": {$exists:true}}, {$unset: {"field1":1}}, {"multi":1} )
修改字段名
db.collection.update({}, {$rename : {"old_field" : "new_field"}}, false, true)
修改子集的字段(把旧字段的值赋值到新字段,然后删掉旧字段)
db.collection.find({"list.oldField":{$exists:true}}).forEach(
function(data) {
for( var i = 0; i < data.list.length; i++) {
data.list[i].newField = data.list[i].oldField;
delete data.list[i].oldField;
}
db.collection.update({"_id":data._id}, data);
}
)
修改子集字段值
{
"_id" : ObjectId("6018bc71c59a6e7b16a4ec24"),
"name" : "中国",
"lists" : [
{
"id" : "11",
"proviceName" : "广东省",
"proviceCode" : "guangdong"
},
{
"id" : "22",
"proviceName" : "广西省",
"proviceCode" : "guangxi"
}
]
}
修改语句:
db.test_sublist.update({"lists.id":"22"}, {$set: {"lists.$.proviceCode":"guangxi"}}, false, true)
找出field1字段数据类型为double的数据
db.collection.find({"field1":{$type:"double"}}).count() 或者 db.collection.find({"field1":{$type:1}}).count()
修改字段类型
double转int32 -> db.collection.find().forEach( function(data) { db.collection.update( {"_id":data._id}, {$set:{"field1":NumberInt(data.field1)}} ) } );
String转Array -> db.collection.find().forEach( function(data) { db.collection.update({"_id":data._id}, {$set:{"field1":Array(data.field1)}}, false, true) } );
修改子集集合中字段的类型
db.collection.find({"list": {$exists: true}}).forEach(
function(data) {
for(var i = 0; i < data.list.length; i++) {
db.collection.update({"_id": data._id, "list.name": data.list[i].name}, {$set: {"list.$.name": new Date(data.list[i].name) }}, false, true)
}
}
);
把一个库数据迁移到另一个库
db.collection.find({}).forEach(
function(data) {
db.getSiblingDB("test_db")["collection"].insert(data);
}
)