mongoDB集合 文档创建修改删除以及查询命令总结

mongodb在windows下的安装,启动查看上一篇:mongoDB安装详解


一、登录 查看数据库 数据库中的集合 文档 添加文档,修改文档,删除文档

1、查看有哪些数据库可以用:

   show dbs;     

2、查看当前使用的数据库的名称:

   db.getName();

3、使用某个数据库,和mysql中一样可以进行数据库之间的转化

   use  dbname;

4、 如果没有数据库则创建数据库,mongodb没有提供像mysql等的创建数据库的语句但有相似功能的命令:如果有这个数据库则使用这个数据库如果没有则创建这个数据库

  use dbname;

 之后进行一些操作如:db.createCollection("collectionName")

// 这样就创建了dbname 数据库,同时也创建了一个集合

5、在当前数据库中创建集合:

例:db.createCollection('collectionName');

6、查看当前数据库下的所有集合:

   db.getCollectionNames();

7、获取当前数据库的某个指定集合:
  db.getCollection("collectionName");

8、向这个集合中添加数据:使用insert() 函数

   db.collectionName.insert({});这里注意一下mongodb使用数据的格式为bson 如果你了解 jsonObject 你会发现这两种格式很像:

BSON这种格式是专门为MongoDB而开发的,类似json的一种二进制格式。

这种格式不一定比json存储的文件小,其优点是解释快。

例:db.mytest.insert({name:'name1',age:2})

9、查看这个集合中有哪些文档:使用find()函数

例:db.mytest.find(); 

// 查询mytest这个集合中的所有文档

10、有条件的查询

例:db.mytest.find({name:'name1'});  

// 查询有name键,且值为name1的文档

11、多条件查询:

例:db.mytest.find({name:'name1',age:2})  

// 查询name为name1age为2 的文档

12、distinct 查询:

例:db.mytest.distinct("name")

// 从mytest这个集合中查询所有的文档,但name键的值不能有重复

13、查询小于某个值 或大学某个值

例:db.mytest.find({age:{$lt:2}})

// 查询mytest这个集合中age<2的文档

例:db.mytest.find({age:{$gt:2}})

// 查询mytest 集合中age>2的文档

14、大于等于,小于等于

例:db.mytest.find({age:{$lte:2}})

// 查询mytest集合中age<=2的文档

例:db.mytest.find({age:{$gte:2}})

// 查询mytest集合中age>=2的文档

15、在两个数之间

例:db.mytest.find({age:{$lt:6,$gt:2}})

// 查询mytest集合中age<6 and age>2的文档

16、排序查询: 排序使用 sort()函数

例:db.mytest.find().sort({age:1})

//按age升序

例:db.mytest.find().sort({age:-1})

//按age降序

// 进行了升序查询

例:db.mytest.find({name:'name1'}).sort({age:1})

 

17、查询前几个指定文档:使用limit()函数

例:db.mytest.find().limit(3)

// 查询mytest集合中的前三个文档

18、in,notin查询:$in $nin

例:db.mytest.find({age:{$in:[2,3,4]}})

// 从mytest集合中查询age为2或3或4的文档和mysql的in是相似的

例:db.mytest.find({age:{$nin:[2,3,4]}})

// 从mytest集合中查询age不为2并且不为3并且不为4的文档

19、or查询使用$or

例:db.mytest.find({$or:[{name:'name1'},{age:3}])

// 查询name为name1或age为3的文档

20、查询这个集合中有多少条数据:

例:db.mytest.count();

21、删除集合中的某个文档,或所有文档使用remove()函数

例:db.mytest.remove({name:'name1'}) 

// 从mytes集合中删除有name键并且值值为name1的那个文档

例:db.mytest.remove()

// 删除mytest集合中的所有文档

22、删除某个集合:使用drop()函数

例:db.mytest.drop()

// 删除mytest这个集合

23、删除当前数据库:使用dropDatabase()函数

例:db.dropDatabase();

 

二、  修改器

1、替换某个档案使用 update命令

例:db.mytest.update({name:'name1'},{name:'name1',age:2});

//将 mytest这个集合中name为name1的文档用后面的替换掉

// 在update中有两个参数,第一个就是要被替换的文档,第二个就是要替换的文档

2、这样我们想修改一下的话很麻烦,所以我们要使用$set修改器来修改:

例:db.mytest.update({name:'name',{$set:{name:'name2'}}})

// 将mytest集合中的name:'name'的档案修改name:'name2'

// $set 修改器和update替换不同,他的第一个参数,是来找到这个档案,第二个参数就是要修改的属性字段,如果不存在则新增这个键值对,如果有则修改他的值

 

3、如果有则增加指定的数量级,如果不存在则添加键值对:

例:db.mytest.update({name:'name1'},{$inc:{age:3}})

//在mytest这个集合中查找键值为name:name1的文档,如果文档中有age键则在原有的值上添加3如果没有则添加这个键值对

4、数组修改器,如果这个数组有则在数组的最后添加值,如果这个数组没有则创建数组:

例:db.mytest.update({name:'name1'},{$push:{comment:{name:'cname',age:6,comment:'good'}}})

//在mytest集合中查找name:'name1'的键值的文档,找到之后再往这个文档中添加一个comment数组,数组中的内容包括name,age,comment

db.mytest.update({name:'name1'},{$push:{comment:{name:cname1,age:7,comment:'good2'}}})

// 第二次操作的时候,comment这个集合已经存在了,所以就会将这些键值对作为数据的一个元素,添加到comment数组的最后

 

5、addToSet向指定的键添加值,而指定的这个键作为数组名称了:

例:db.mytest.update({name:'name1'},{$addToSet:{email:'a@163.com'}})

// 通过addToSet向mytest集合的键值为name:name1的这个文档中添加了一个email数组,如果数组中有则不会再次添加,如果没有则会添加

6、addToSet 和 each 组合一次向数组中添加多个值:

例:db.mytest.update({name:'name1'},{$addToSet:{email:{$each:['a@.com','b@.com','c@.com']}}})

// 通过each的遍历将多个值一次添加到email这个数组中


注意:这里强调一下,在mongodb中使用的就是bson这个格式多以,你也会发现,我们使用的insert(),find() remove() 等函数的参数都是用bson这种格式来写的。

 

三、BSON了解

简单了解BSON:

BSON是一种类json的一种二进制形式的存储格式,简称BinaryJSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的ProtocolBuffer,但是BSON是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想,

BSON有三个特点:轻量性、可遍历性、高效性

 

格式对比:

(1)、bson: {key:value}

(2)、json:{key:value}

(3)、Map:{key=value}

 

 

 

 

 

 

 

### MongoDB 集合结构相关命令及其使用方法 #### 创建集合MongoDB 中,可以通过 `createCollection` 方法显式创建一个集合。如果未指定该操作,则当向某个不存在的集合插入第一条记录时,MongoDB 会自动创建这个集合。 ```javascript db.createCollection("my_collection"); ``` 此命令用于手动定义一个新的集合名称并初始化它[^3]。 --- #### 插入文档集合 为了填充集合中的数据,可以利用 `insertOne` 或者 `insertMany` 方法来完成单条或多条记录的写入工作: ```javascript // 单条插入 db.my_collection.insertOne({ name: "John Doe", age: 30 }); // 多条插入 db.my_collection.insertMany([ { name: "Jane Smith", age: 28 }, { name: "Alice Johnson", age: 24 } ]); ``` 这些函数允许开发者将 JSON 格式的对象存入集合中,而无需预先设定固定的字段列表。 --- #### 查询集合内容 对于已存在的集合,可采用多种方式检索其中的信息。最基础的形式是调用 `find()` 函数返回整个集合的所有项目;或者通过传递条件参数实现更精确的结果筛选: ```javascript // 查找全部文档 let allDocuments = db.my_collection.find(); // 条件查找 (例如年龄大于等于25岁的人) let filteredResults = db.my_collection.find({ age: { $gte: 25 } }); ``` 值得注意的是,默认情况下 `_id` 字段会被系统自动生成,并且能够被用来唯一标识每一条记录[^4]。 --- #### 更新现有集合内的数据 一旦发现某些特定项需要修改其属性值的时候,应该运用 `updateOne`, `updateMany` 及其他类似的更新指令来进行调整: ```javascript // 修改单一匹配项的名字为"Updated Name" db.my_collection.updateOne( { name: "John Doe" }, { $set: { name: "Updated Name" }} ); // 同时更改多个符合条件者的状态标志位 db.my_collection.updateMany( {}, // 空查询表示作用于所有成员 { $unset: { isActive: "" }} // 移除isActive字段 ); ``` 上述例子展示了如何定位目标以及设置新的键-值对或移除旧有的部分[^1]。 --- #### 更改集合名字 假如业务逻辑发生变化导致原定命名不再适用的话,那么就可以借助 `renameCollection` 动作轻松解决这个问题: ```javascript db.my_old_name.renameCollection("my_new_name"); ``` 执行成功之后原来的引用路径将会失效,请务必提前做好相应的迁移准备工作。 --- #### 删除集合及相关数据 最后,在确认没有任何残留价值的前提下清除掉不必要的资源是非常重要的一步。这既包括单独某几条目也可能是整体销毁整张表格的操作: ```javascript // 清空集合但保留元数据 db.my_collection.remove({}); // 彻底删去连同索引在内的所有东西 db.my_collection.drop(); ``` 另外建议在此之前先做一次完整的备份以防万一丢失重要资料[^2]: ```bash mongodump --db=my_database --collection=my_collection --out=/backup/ ``` 以上就是围绕着 MongoDB 数据库里关于集合层面的一些常用技巧总结。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值