您的位置:首页 > 数据库 > Mongodb

mongodb 基本操作

2015-07-04 11:43 591 查看
1. 远程连接
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中的数据
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" 就是被更新的文档数量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: