1. 远程连接
2. 创建集合
mongo 192.168.23.4/TestDB -u hd -p Dbpassw0rd@Hd
2. 创建集合
db.createCollection("test_home");
3. 删除集合
db.kk.drop();
db.getCollection("20150306.dat").drop();
如果有特殊字符串,第一种是删除不了的,还是用第二种保险
4. 重命名集合
db.test.renameCollection("test1");
5. 删除test_home中的数据
6. 验证是否删除了
7. 导出
db.test_home.remove({});
6. 验证是否删除了
db.test_home.find();
7. 导出
mongoexport -h 192.168.23.4 -u hd -p Dbpassw0rd@Hd -d TestDB -c stores -o stores.txt
8. 导入
mongoimport -h 192.168.23.4 -u hd -p Dbpassw0rd@Hd -d TestDB -c stores stores.txt
9. 切换用户 切换到local
use local;
10. 修改字段名
db.home.update({}, {$rename : {"type" : "row_location"}}, false, true);
11. 删除字段 先获取可删除字段的个数,再循环删除
var len = db.stores.find({"_class":{$ne:null}}).count();
for (var i = 0; i <= len; i++) {
db.stores.update({"_class":{$ne:null}},{"$unset":{"_class":1}});
};
12. 循环插入
var o= db.users.find();
for(var i = 0; i < o.count(); i++){
print(o[i].user_name);
}
13. 插入值
db.test1.insert( { _id: "homepageVersion111", version_type: "homepageVersion111",version_id:o[0].name} );
14. 测试删除语句消耗时间
var timeRemoves = function(){
var start = (new Date()).getTime();
db.tester.remove();
db.findOne();
var timeDiff = (new Date()).getTime() - start;
print("Remvoe took:" + timeDiff + "ms");
}
timeRemoves();
结论:如果集合里面数据非常多时,直接用drop删除要比remove快很多。
15. 改变文档结构
var joe = db.users.findOne({"name":"joe"});
joe.relationships = {"friends": joe.friends,"enemies":joe.enemies};
joe.username = joe.name;
delete joe.friends
delete joe.enemies;
db.users.update({"name","joe"},joe);
常见错误: 查询条件匹配到了多个文档,这时候所有文档都不会更新
16. 使用修改器
"$set" 用来指定一个字段的值。如果这个字段不存在,则创建它
db.users.update({"_id":ObjectId("4b3425rtw462wqt24")},{"$set":{"favorite":"War"}});
"$unset" 将这个键完全删掉
db.users.update({"_id":ObjectId("4b3425rtw462wqt24")},{"$unset":{"favorite":1}});
甚至可以修改内嵌文档
"$inc"增加和减少,只能用于整型、浮点型等,用法与"$set"类似
下面几个为数组操作
"$push" 如果数组存在,会向数组末尾加入元素,要是没有就创建新的数组
db.blog.posts.update({"title":"A blog post"},
{ "$push":{"comments":[
{
"name":"joe",
"content":"nice post"
}
]}});
这是比较简单的,也可以使用"$each"子操作符,一次为数组添加多个值
db.stock.ticker.update({"_id":"GOOG"},
{ "$push":{"hourly":{"$each":[154,587,698,154]}
}});
"$addToSet" 可以避免往数组插入重复值
db.stock.ticker.update({"_id":"GOOG"},
{"$addToSet":{"hourly":578}});
"$pull" 删除数组中的元素 删除todo数组中的所有laundry值
{"$pop":{"key":1}} {"$pop":{"key":-1}} 从数组末尾或者头删除一个元素
db.lists.update({},{"$pull":{"todo":"laundry"}});
17. upsert操作
是一种特殊的更新 要是没有找到符合条件的文档,就会以这个条件和更新文档为基础,新建一个新的文档。找到了就正常更新。
db.analytics.update({"url":"/blog"},{"$inc":{"pageviews":1}},true);
第三个参数表示是个upsert
18. 更新多个文档
一般情况update是只会更新一个文档的,要想更新多个文档,可以将update的第4个参数设置为true
db.users.update({"biretday":"10/13/1978"},{"$set":{"gift":"Happy Birthday!"}},false,true);
如果我们想知道到底更新了多少个文档怎么办?
更新之后,运行
db.runCommand({getLastError:1});
{
"err":null,
"updatedExisting": true,
"n":5,
"ok":true
}
键 "n" 就是被更新的文档数量