MongoDB数据库基本操作API

363 阅读2分钟

修改器

1.$set 设置某一个字段的值。

db.collections.update({查找的数据},{$set:{要修改的数据}})
例子:db.test.update({name:"zzz"},{$set:{sex:1,age:10}})

2.$unset 删除字段。

db.collections.update({查找的数据},{$unset:{要删除的数据}})
例子:db.test.update({name:"zzz"},{$unset:{age:''}})

3.$inc 对一个数字字段的某一个field增加value

db.collections.update({查找的数据},{$inc:{age:val}})
val 为正数相加 为负数的时候相减

4.multi 所有数据

db.collections.update({},{inter:[]},{multi:true/false})

4.upsert 集合中添加数据

db.collections.update({name:'zhangzz'},{$set:{age:100}},{upsert:true/false})

5.$push 数组修饰符(追加数组或者操作内嵌文档)

db.collections.update({name:'primise'},{$push:{loves:'sleep'}})
db.collections.update({name:'primise'},{$push:{skill.four:'php'}})

6.$ne 修改之前先查找 有则修改没有则添加

db.collections.update({name:'primise',"interest":{$ne:'shit'}},{$push:{interset:'shiting'}})

升级版 $addToSet

db.collections.update({name:'primise'},{$addToSet:{interset:'shiting'}}},)

7.$each 批量追加(循环追加)

var newInterset = ['sleep','Code','Dance']
db.collections.update({name:'primise'},{$addToSet:{interset:{$each:newInterset}}})

8.$pop 两个值 1 从末端进行删除 -1从开始位置就行删除

db.collections.update({name:'primise'},{$pop:{interset:1}})

9.数组定位

db.collections.update({name:'primise'},{$set:{"interset.2":"Code"}})

10.findAndModify(应答式操作)

db.workmate.update({sex:1},{$set:{money:4000}},false,true) 第一个是upsert 没有不添加 第二个是 全部修改
var msg = db.runCommand({getLastError:1})
print(msg)

10.findAndModify 查找并修改

  findAndModify:'workmate',
  query:{name:'primise'},
  update:{$set:{age:0}},
  new:true //更新完成 需要查看结果,如果为false不进行查看结果。
}

var ResultMsg = db.runCommand(myModify);
printjson(ResultMsg)

findAndModify属性值:{
  query:需要查询的条件/文档
  sort: 进行排序
  remove:[boolean]是否删除查找到的文档,值填写true,可以删除。
  new:[boolean]返回更新前的文档还是更新后的文档。
  fields:需要返回的字段
  upsert:没有这个值是否增加。
} 

不等修饰符

1.小于(lt2.小于等于(lt)2.小于等于(lte)3.大于(gt4.大于等于(gt)4.大于等于(gte)5.不等于($ne)

例子:查找大于等于15小于等于30岁的人

db.collections.find({age:{$gte:15,$lte:30}},{name:true,age:true})

$in修饰符(一个key值多个value)

例子:db.workmate.find({age:{$in:[20,33]}},{name:true,"id":false,age:true})

$nin修饰符(不包含值 非的意思)

例子:db.workmate.find({age:{$nin:[20,33]}},{name:true,"id":false,age:true})

$or修饰符 (条件成立一个即可 “或”)

例子:db.collections.find({$or:[{age:{$gte:35}},{'skill.skillOne':"php"}]},{
  name:true,"skill.skillOne":true
})

$and修饰符(条件都成立 "且")

例子:db.collections.find({$and:[{age:{$gte:35}},{'skill.skillOne':"php"}]},{
  name:true,"skill.skillOne":true
})

基本数组查询

例子.db.collection.find({interest:['睡觉','打游戏']},{name:1,age:1,"_id":0}) $all-数组多项查询

例子.db.collection.find({interest:{$all:['看电影','看书']}},{name:1,age:1,interest:1,_id:0})

$size-数组个数查询

例子.db.collection.find({interest:{$size:3}},{name:1,age:1,interest:1,_id:0}) $slice-显示选项

例子.db.collection.find({},{name:1,age:1,interest:{$slice:2},_id:0})

find参数查寻

query:这个就是查询条件,MongoDB默认的第一个参数。
fields:(返回内容)查询出来后显示的结果样式,可以用truefalse控制是否显示。
limit:返回的数量,后边跟数字,控制每次查询返回的结果数量。
skip:跳过多少个显示,和limit结合可以实现分页。
sort:排序方式,从小到大排序使用1,从大到小排序使用-1。

例子:db.collections.find({},{name:1,age:1_id:0}).limit(0).skip(2).sort({age:1})

$where 修饰符 js条件查询this指向的是查寻集合本身

{$where:'this.age>20'},
{name:true,age:true,_id:false}
).limit(0).skip(3).sort({age:1})```



### 索引查寻
数据超过万条;
数字索引;
对象型数据;
1.简单索引 
db.collections.getIndexes();//查询索引
db.collections.ensureIndex({userName:1})//建立缓存 

2.复合索引
```db.collections.ensureIndex({userName:1,nameIndex:1}).hint({nameIndex:1})```

3.全文索引 查询关键字
```db.collection.find({$text:{$search:"skill name  sex"}}) 或的关系 -sleep 减号不希望有这个单词的存在```


### 数据库备份、还原

```mongodump
  --host 127.0.0.1
  --port 27017
  --out D:/databack/backup
  --collection myCollections
  --db test
  --username username
  --password password 


mongorestore
  --host 127.0.0.1
  --port 27017
  --username username
  --password password 
  <path to the backup>

  mongorestore --host 127.0.0.1 --port 27017  D:/databack/backup

也可以直接打开命令行 mongodb 目录下cd到bin 输入mongodump 备份 mongorestore还原版本

图形数据库

基本上使用Remongo 直接运行mongod 打开图形工具 在这里插入图片描述 最后就可以在图形工具愉快的增删查改了!