mongodb 基本操作

本文详细介绍了如何使用MongoDB进行数据库连接、创建与删除集合、重命名集合、删除与验证数据、导出与导入数据、切换用户、修改与删除字段、循环插入与删除、插入值、测试删除语句效率、改变文档结构、使用修改器、upsert操作、更新多个文档、获取更新数量等核心数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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" 就是被更新的文档数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值