zoukankan      html  css  js  c++  java
  • mongodb

    2019年6月10日:
    MongoDB回顾:
    MongoDB缺陷-牺牲掉大部分磁盘空间
    1.MongoDB启动
    	mongod 启动 查找的db目录默认是在 C:datadb
    	mongod --dbpath=D:datadb
    	[thread1] waiting for connections on port 27017
    	默认端口 27017
    
    2.MongoDB指令
    	show databases 查询当前服务器磁盘中的数据库
    	use dbname 切换或者在内存中创建数据库
    		当dbname 存在时切换
    		当dbname 不存在时在内存中创建数据库
    	
    	show tables 查询当前数据库磁盘中的数据表(Collection)
    	db	代指当前使用的数据库 查询当前使用的数据库名
    	db.tablename 查看或创建当前数据库下的数据表(内存中)
    	
    	MongoDB - 使用了不存在的对象即创建该对象
    	
    3.增删改查
    	增加
    	db.tablename.insert() 增加数据 官方在3.2版本以后不推荐的写法
    	db.tablename.insertOne({})增加单条数据
    	db.tablename.insertMany([{},{},{}])增加多条数据
    	
    	查询
    	db.tablename.find({}) 查找符合条件的所有数据 
    	db.tablename.findOne({}) 查找符合条件的第一条数据
    	查询条件
    		并列条件{id:1,age:6}
    		$or
    		$and
    		$in
    		$all
    		
    	修改 Array Object==字典 Array+Object - Object+Array+Object
    	db.tablename.update() 修改数据 官方在3.2版本以后不推荐的写法
    	db.tablename.updateOne({},{$修改器:{预修改值}}) 查找并更新符合条件的第一条数据
    	db.tablename.updateMany({},{$修改器:{预修改值}}) 查找并更新符合条件的所有数据
    	修改器 : 
    	$set  强制修改 {$set:{age:2}}
    	$inc  引用增加 {$inc:{age:1}} {$inc:{age:-1}}
    	$unset 删除字段 {$unset:{age:1}}
    	Array: #列表
    	$push 在Array中追加一个元素 {$push:{user_list:"alexander"}} append()
    	$pushAll 在Array中追加多个元素 {$pushAll:{user_list:[1,2,3,4,5,1,2,3]}} extend()
    	$pull 在 Array 中删除一条符合条件的数据 {$pull:{user_list:1}}
    	$pullAll 在 Array 中删除多个符合条件的元素	{$pullAll:{user_list:[1,2,3,4,5]}}
    	$pop 在 Array 中删除最后一个元素或者是第一个元素
    		{$pop:{user_list:-1}} 删除第一个元素
    		{$pop:{user_list:1}} 删除最后一个元素
    	
    	例:{name:1,hobby:[1,2,3,4,5,6]}	
    	将 6 改为 7
    	db.tablename.updateOne({hobby:6,name:1},{$set:{"hobby.$":7}})
    	将 3 从列表中删除
    	db.tablename.updateOne({name:1},{$pull:{hobby:3}})
    	
    	Array + Object:
    	{name:1,hobby:[{type:1,detail:"抽烟"},{type:2,detail:"喝酒"}]}	
    	将 抽烟 改为 飙车
    	db.tablename.updateOne({"hobby.detail":"抽烟"},{$set:{"hobby.$.detail":"飙车"}})
    	
    	删除:
    	db.tablename.remove({}) 删除所有符合条件的数据 官方在3.2版本以后不推荐的写法
    	db.tablename.deleteOne({}) 删除第一条符合条件的数据
    	db.tablename.deleteMany({}) 删除所有符合条件的数据
    	
    
    
    4.$
    	存储符合条件元素的下标索引
    	例:{name:1,hobby:[1,2,3,4,5,6]}	
    	将 6 改为 7
    	db.tablename.updateOne({hobby:6,name:1},{$set:{"hobby.$":7}})
    	Array + Object:
    	{name:1,hobby:[{type:1,detail:"抽烟"},{type:2,detail:"喝酒"}]}	
    	将 抽烟 改为 飙车
    	db.tablename.updateOne({"hobby.detail":"抽烟"},{$set:{"hobby.$.detail":"飙车"}})
    
    
    5.$关键字
    	数学比较符:
    	$lt 小于
    	$lte 小于等于
    	$gt 大于(G == g == 哥)
    	$gte 大于等于
    	$ne	不等于 (no不 e等于)
    	$eq 等于 (: 在 :不能使用或者是不代表等于的情况使用 $eq)
    	
    	$查询关键字:
    	$or 或条件查询 name:1,age:6 在不同字段情况下查询
    	db.tablename.find({$or:[{name:1},{age:6}]})
    	$and 并列条件
    	db.tablename.findOne({$and:[{name:1},{age:6}]})
    	db.tablename.findOne({name:1,age:6})
    	$in 或条件查询 相同字段的查询
    	db.tablename.find({age:{$in:[6,10,12,14,16]}})
    	//db.tablename.find({$or:[{age:6},{age:10}]})
    	
    	$all 查询子集或完全子集
    	例:{name:1,hobby:[1,2,3,4,5,6]}	
    	db.tablename.findOne({hobby:{$all:[1,5,3]}}) 不存在顺序
    	//db.tablename.findOne({hobby:{$all:[1,3,7]}}) 不是子集
    
    
    
    1.sort
    db.users.find({}).sort({ _id:-1 }) // 排序 1 正序 -1 倒序
    
    2.limit
    db.users.find({}).limit(5)  //选取 
    db.users.find({}).limit(5).sort({ _id:-1 })  //选取排序逻辑顺序 , 先排序 再选取 
    
    3.skip
    db.users.find({}).skip(9) // 跳过 
    db.users.find({}).skip(2).sort({ _id:-1 }) // 跳过排序逻辑熟悉怒 先排序 后跳过
    
    混合用法
    db.users.find({}).limit(5).skip(5) // 逻辑顺序 先跳过再选取
    db.users.find({}).limit(5).skip(5).sort({ _id:-1 }) // 排序跳过选取,逻辑顺序 1.先排序 2.跳过 3.选取
    
    4.分页
    db.users.find({}).limit(2).skip(0).sort({ _id:-1 }) // 第一页
    db.users.find({}).limit(2).skip(2).sort({ _id:-1 }) // 第二页
    db.users.find({}).limit(2).skip(4).sort({ _id:-1 }) // 第三页
    db.users.find({}).limit(2).skip(6).sort({ _id:-1 }) // 第四页
    db.users.find({}).limit(2).skip(8).sort({ _id:-1 }) // 第五页
    

      

  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/ellisonzhang/p/10999764.html
Copyright © 2011-2022 走看看