IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MongoDB 集合、文档、索引增删改查 语法 -> 正文阅读

[大数据]MongoDB 集合、文档、索引增删改查 语法

一些操作MongoDB语法的学习分享,希望对你有所帮助。


集合

创建集合

db.createCollection('集合名称');

删除集合

db.'集合名称'.drop();

文档

插入文档

  • 插入单条 db.collection.insertOne()

    db.user.insertOne(
    	{
            user_name:'张三',
            age:NumberLong(18),
            sex:NumberInt(1),
            deposit:7777777.77,//Double
            deposit:NumberDecimal(7777777.77),
            like:['吃饭','睡觉','打豆豆'],
            create_time:'2022-04-02 18:00:00',
            remark:'用户群1'
    	}
    );
    -- 也可以定义变量操作
    var document = ({a:'81'})
    db.test_1.insertOne(document)
    
  • 插入多条 db.collection.insertMany()

    db.test_1.insertMany([{a:'1'},{a:'2'},{a:'3'}]);
    -- 也可以定义变量操作
    var documentArr = ([{a:'82'}, {a:'83'}, {a:'85'}])
    db.test_1.insertMany(documentArr)
    -- 循环操作
    var arr = [];
    for(var i=1 ; i<=100 ; i++){
        arr.push({a:'' + i});
    }
    db.test_1.insertMany(arr);
    

更新文档

? 更新时候一定要加 $set , 否则其他字段都会改成null

  • 更新单条

    db.user.updateOne( 
    	{
        	_id: ObjectId("6247b20fb6120000c9007eb6") 
    	}, 
    	{$set:
    		{
    			_id: ObjectId("6247b20fb6120000c9007eb6"),
    			"user_name": "张三5",
    			age: NumberLong("18"),
    			sex: NumberInt("1"),
    			deposit: NumberDecimal("7777777.77"),
    			like: [
    					"吃饭",
    					"睡觉",
    					"打豆豆"
    			],
    			"create_time": "2022-04-02 18:00:00",
    			remark: "用户群100"
    		}
    	}
    );
    
  • 更新多条

    db.user.updateMany( 
    	{age: {$gt : 10}}, 
    	{$set:
    		{
    			remark: "用户群1批量修改"
    		}
    	}
    );
    

删除文档

  • 删除集合下所有

    db.test_1.deleteMany({});
    
  • 删除匹配到的一条

    db.user.deleteOne({user_name:'pop'});
    db.user.remove({user_name:'pop'},1);-- justOne:1或true,删除1个文档,不填默认false,删除所有匹配条件的文档。
    
  • 删除匹配到的全部

    db.user.deleteMany({user_name:'pop'});
    db.user.remove({user_name:'pop'}); 
    

查询文档

单条

db.user.findOne();

全部

db.user.find();

条件查询

- AND
db.user.find({user_name:'张三5', age:18});
- OR
db.user.find({$or:[{user_name:'张三5'},{user_name:'张三3'}]});
- AND OR
db.user.find({age:{$gt:19}, $or:[{user_name:'张三5'},{user_name:'张三3'}]});

条件操作符

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<=) 小于等于 - $lte

$type 操作符

  • 获取对应类型的数据
db.user.find({user_name : {$type : 2}})
-- 或
db.user.find({user_name: {$type : 'string'}})
  • 可使用类型
类型数字备注
Double1
String2
Object3
Array4
Binary data5
Undefined6已废弃。
Object id7
Boolean8
Date9
Null10
Regular Expression11
JavaScript13
Symbol14
JavaScript (with scope)15
32-bit integer16
Timestamp17
64-bit integer18
Min key255Query with -1.
Max key127

Limit与Skip方法

-- 获取指定长度的数据
db.user.find().limit(3);
-- 获取指定长度数据,但是从指定位置截取,从0开始,同mysql的 limit 0, 10
db.user.find().skip(2).limit(3);

排序

db.user.find().sort({user_name:-1}).skip(2).limit(3); -- 这里举例是三个一起使用

索引

创建索引

  • 普通索引

    db.index1.createIndex({user_name:1});
    
  • 复合索引

    db.index1.createIndex({user_name:1});
    
  • 唯一复核索引

    db.index1.createIndex({user_name:1, age:-1}, {unique:true});
    

查看索引

  • 查看集合索引

    db.col.getIndexes()
    
  • 查看集合索引大小

    db.col.totalIndexSize()
    

删除索引

  • 删除集合指定索引

    db.col.dropIndex("索引名称")
    
  • 删除集合所有索引

    db.col.dropIndexes()
    

createIndex() 接收可选参数

ParameterTypeDescription
backgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为false
uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDupsBoolean**3.0+版本已废弃。**在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

聚合

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
-- 类似sql的  select by_user, count(*) from mycol group by by_user
  • 聚合的表达式

    表达式描述实例
    $sum计算总和。db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { s u m : " sum : " sum:"likes"}}}])
    $avg计算平均值db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { a v g : " avg : " avg:"likes"}}}])
    $min获取集合中所有文档对应值得最小值。db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { m i n : " min : " min:"likes"}}}])
    $max获取集合中所有文档对应值得最大值。db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { m a x : " max : " max:"likes"}}}])
    $push将值加入一个数组中,不会判断是否有重复的值。db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : { p u s h : " push: " push:"url"}}}])
    $addToSet将值加入一个数组中,会判断是否有重复的值,若相同的值在数组中已经存在了,则不加入。db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : { a d d T o S e t : " addToSet : " addToSet:"url"}}}])
    $first根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", first_url : { f i r s t : " first : " first:"url"}}}])
    $last根据资源文档的排序获取最后一个文档数据db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", last_url : { l a s t : " last : " last:"url"}}}])

学海无涯苦作舟,唯有编码解忧愁。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:18:09  更:2022-04-04 12:19:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:56:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码