MongoDB学习笔记(三) | 青训营笔记

77 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

书接上一节,本节继续记录学习mongoDB时的学习笔记。这部分的内容主要是关于数据库的一些增删改差点基本操作。

一.增删改

1.增

  • 单条文档
    db.集合名称.insertOne({键:"值"...});
    
  • 多条文档
    db.集合名称.insertMany(
    [ {键:"值"...} , {键:"值"...} , ...],//文档数组
    {
    	writeConcern: 1,//写入策略,默认是1,即要求确认写操作,0是不要求
    	ordered: true //指定是否按顺序写入,默认true
    }
    )
    
    //或者
    db.集合名称.insert([
            {键:"值"...},
            {键:"值"...},
            ...
    ]);
    
  • 脚本方式
    for(let i=0; i<100; i++){
            db.集合名称.insert({_id:i,键:"值"...});
    }
    
    • 注意:每个文档都有一个_id作为唯一标识,_id会默认自动生成,也可以手动指定,但不能重复

2.删

  • 文档删除
    db.集合名称.remove(
            {query}
            {
                    justOne: <boolean>,
                    writeConcern: <document>
            }
    )
    
    
    • 参数说明
      • query :可选 删除的文档的条件。
      • justOne: 可选 如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
      • writeConcern:可选抛出异常的级别。

3.改

db.users.updateOne/updateMany({条件},{$set:{新内容}});

二.查

  • 查询所有
db.集合名称.find();
  • 对比语法
操作格式
等于{<key>:<value>}
小于{<key>:{$lt:<value>}}
小于或等于{<key>:{$lte:<value>}}
大于{<key>:{$gt:<value>}}
大于或等于{<key>:{$gte:<value>}}
不等于{<key>:{$ne:<value>}}
  • AND

    db.集合名称.find({key1:value1,key2:value2})
    
    • 注意:如果条件中一个字段出现多次,后面的会将前面的覆盖掉
  • AND和OR联合

db.集合名称.find(
	{
		key1:value1,
		$or: [
			{key1:value1},{key2:value2}
		]
	}
)
  • 数组查询

    • 根据数组含有的值
      db.集合名称.find({数组名称:value})
      
    • 根据数组的长度
      db.集合名称.find({数组名称:{$size:n}})
      
  • 模糊查询

    • 条件值用正则表达式
  • 排序

db.集合名称.find().sort({key1:rule,key2:rule})
//rule: 1升序 -1降序
  • 分页查询
db.集合名称.find().sort({key:rule}).skip(开始).limit(查询条数)
  • 总条数
db.集合名称[.find({key:value})].count
  • 去重
db.集合字段.distinct(key)
  • 指定返回字段
    db.集合名称.dind({条件},{key1:rule,key2:rule})
    //rule: 1返回,0不返回
    
    • 注意:要么都是0,要么都是1,否则会冲突