数据库常用命令

1、Help查看命令提示

help

db.help();

db.yourColl.help();

db.youColl.find().help();

rs.help();

2、切换/创建数据库

use yourDB;  当创建一个集合(table)的时候会自动创建当前数据库

3、查询所有数据库

show dbs;

4、删除当前使用数据库

db.dropDatabase();

5、从指定主机上克隆数据库

db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库

6、从指定的机器上复制指定数据库数据到某个数据库

db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中

7、修复当前数据库

db.repairDatabase();

8、查看当前使用的数据库

db.getName();

db; db和getName方法是一样的效果,都可以查询当前使用的数据库

9、显示当前db状态

db.stats();

10、当前db版本

db.version();

11、查看当前db的链接机器地址

db.getMongo();

Collection聚集集合

1、创建一个聚集集合(table)

db.createCollection(“collName”, {size: 20, capped: 5, max: 100});

2、得到指定名称的聚集集合(table)

db.getCollection("account");

3、得到当前db的所有聚集集合

db.getCollectionNames();

4、显示当前db所有聚集索引的状态

db.printCollectionStats();

用户相关

1、添加一个用户

db.addUser("name");

db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读

2、数据库认证、安全模式

db.auth("userName", "123123");

3、显示当前所有用户

show users;

4、删除用户

db.removeUser("userName");

错误信息操作

1、查询之前的错误信息
 db.getPrevError();
2、清除错误记录
 db.resetError();
 

查看聚集集合基本信息

1、查看帮助  db.yourColl.help();
2、查询当前集合的数据条数  db.yourColl.count();
3、查看数据空间大小 db.userInfo.dataSize();
4、得到当前聚集集合所在的db db.userInfo.getDB();
5、得到当前聚集的状态 db.userInfo.stats();
6、得到聚集集合总大小 db.userInfo.totalSize();
7、聚集集合储存空间大小 db.userInfo.storageSize();
8、Shard版本信息  db.userInfo.getShardVersion()
9、聚集集合重命名 db.userInfo.renameCollection("users"); 将userInfo重命名为users
10、删除当前聚集集合 db.userInfo.drop();  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

索引操作

1、创建索引
db.userInfo.ensureIndex({name: 1});
db.userInfo.ensureIndex({name: 1, ts: -1});2、查询当前聚集集合所有索引
db.userInfo.getIndexes();3、查看总索引记录大小
db.userInfo.totalIndexSize();4、读取当前集合的所有index信息
db.users.reIndex();5、删除指定索引
db.users.dropIndex("name_1");6、删除所有索引索引
db.users.dropIndexes();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

查询操作

Mongodb-SpringMvc下Query数据库操作SQL
http://blog.csdn.net/xiaohulunb/article/details/27828381

1.查询所有

> db.foo.find()
{ "_id" : ObjectId("5389aa1df06b88aaa313746a"), "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "_id" : ObjectId("5389aaa4afce65313a5614f7"), "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "_id" : ObjectId("5389aabaafce65313a5614f8"), "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "_id" : ObjectId("5389aac5afce65313a5614f9"), "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }  
  • 1
  • 2
  • 3
  • 4
  • 5

2.显示指定列

第一个{} 放where条件 第二个{} 指定哪些列显示和不显示 (0表示不显示 >0表示显示)

后面演示使用{‘_id’:0} 默认隐藏‘_id列’减少显示量

> db.foo.find({},{'_id':0,'name':1,'user':1})
{ "name" : "yiwa", "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "user" : { "phone" : [ 63, 137 ] } }  
  • 1
  • 2
  • 3
  • 4
  • 5

3.使用and操作

#名字是yiwa且年龄是25岁

> db.foo.find({'name':'yiwa','age':25},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }  
  • 1
  • 2

4.使用or操作

#名字是yiwa或者年龄是75岁
> db.foo.find({'$or':[{'name':'yiwa'},{'age':75}]},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }  
  • 1
  • 2
  • 3

5.使用<, <=, >, >= (lt,&nbsp;lte, gt,&nbsp;gte )操作,取模运算$mod

#年龄在 15<= x <=75 岁

> db.foo.find({'age':{'$gte':15,'$lte':75}},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
  • 1
  • 2
  • 3
  • 4

# 对age%3==1的取模结果

> db.foo.find({'age':{'$mod':[3,1]}},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }  
  • 1
  • 2
  • 3

6.使用in, not in (in,nin)

#名字不是siwa且年龄在[15,25,85]
> db.foo.find({'name':{'$nin':['siwa']},'age':{'$in':[15,25,85]}},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }  
  • 1
  • 2
  • 3

7.匹配null操作

#名字是null的
> db.foo.find({'name':null},{'_id':0})
> 
  • 1
  • 2

8.使用like (mongoDB 支持正则表达式)

#名字like%iwa%的
#名字like  yi%的
> db.foo.find({'name':/iwa/},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.find({'name':/^yi/},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }  
  • 1
  • 2
  • 3
  • 4
  • 5

9.使用distinct、count查询

> db.foo.distinct('name')
[ "yiwa", "erwa", "sanwa", "siwa" ]
> db.foo.count()
4 
  • 1
  • 2
  • 3
  • 4

#distinct结合条件,排序使用

> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 95, "user" : { "phone" : [ 123, 133, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 133, 137, 186 ] } }
> db.foo.distinct("age",{'user.phone':{'$in':[63,65,186]}}).sort({'age':1})
[ 25, 85, 95 ]
> db.foo.distinct("age",{'user.phone':{'$in':[63,65,186]}}).sort({'age':-1})
[ 25, 85, 95 ]
> db.foo.distinct("age",{'user.phone':{'$in':[63,65,186]}})
[ 25, 95, 85 ]  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

待解疑问:?为什么 排序时候 age :-1 与 age :1 结果一样?

10.数组查询 (mongoDB自己特有的)(all,size)

#电话中含有186的
> db.foo.find({'user.phone':186},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }  
  • 1
  • 2
  • 3
  • 4
#电话中含有188,186的
> db.foo.find({'user.phone':{'$all':[188,186]}},{'_id':0})
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }  
  • 1
  • 2

#电话中有2个值的

> db.foo.find({'user.phone':{'$size':2}},{'_id':0})
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } } 
  • 1
  • 2

11.exists判断是否存在,type判断类型,Sort排序

#name中值是字符型,age中值是整型,按name升序,age降序
> db.foo.find({'name':{'$type':2},'age':{'$type':16}},{'_id':0}).sort({'name':1,'age':-1})
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }  
  • 1
  • 2
  • 3
  • 4

#name中值存在的:true

#name中值不存在的:false
> db.foo.find({'name':{'$exists':true}},{'_id':0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.find({'name':{'$exists':false}},{'_id':0})
>   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

12.$elemMatch数组元素匹配

#插入测试数据

> db.foo.save({x:[{'a':1,'b':5},999,'liw',{'a':12},{'b':100}]})
WriteResult({ "nInserted" : 1 })  
  • 1
  • 2

#查询某元素中a=1,b=5的元素

> db.foo.find({'x':{'$elemMatch':{'a':1,b:{'$gt':4}}}},{'_id':0})
{ "x" : [ { "a" : 1, "b" : 5 }, 999, "liw", { "a" : 12 }, { "b" : 100 } ] }
> db.foo.find({'x.a':1,'x.b':5},{'_id':0})
{ "x" : [ { "a" : 1, "b" : 5 }, 999, "liw", { "a" : 12 }, { "b" : 100 } ] } 
  • 1
  • 2
  • 3
  • 4

更新操作

1.update( criteria, objNew, upsert, multi)、save() 方法

criteria : update的查询条件,类似sql update查询内where后面的
objNew   : update的对象和一些更新的操作符(如,inc…)等,也可以理解为sql update查询内set后面的
upsert   : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi    : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

save()方法相当于upsert与multi 都为true时候

> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 55, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.update({'age':{$gte:30}},{$set:{'age':55}},fasle,false)
2014-05-31T19:36:05.407+0800 ReferenceError: fasle is not defined
> db.foo.update({'age':{$gte:30}},{$set:{'age':55}},false,false)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 55, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.update({'age':{$gte:30}},{$set:{'age':56}},false,false)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 56, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.update({'age':{$gte:300}},{$set:{'age':56}},true,false)
WriteResult({  "nMatched" : 0,  "nUpserted" : 1,  "nModified" : 0,  "_id" : ObjectId("5389bee8afce65313a5614fa")
})
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 56, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
{ "age" : 56 }
> db.foo.update({'age':{$gte:30}},{$set:{'age':56}},true,true)
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 2 })
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 56, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 56, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 56, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
{ "age" : 56 }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

2.$inc 对于数字字段的值增加value

#年龄大于30的 全部age值增加20
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 58, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 56, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 56, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.update({'age':{$gte:30}},{$inc:{'age':20}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 78, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 56, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 56, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.$set 相当于sql的set field = value

#年龄=56的,设置为名字=’laoda’,年龄=65
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 78, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 56, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 56, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.update({'age':56},{$set:{'name':'laoda','age':65}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 78, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "laoda", "age" : 65, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 56, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

#只更新了一条数据,因为 multi 默认为false

4.$unset 删除字段

#查询name=’laoda’,user字段存在的数据中,删除age=65的age字段
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 78, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "laoda", "age" : 65, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 56, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
{ "age" : 65, "name" : "laoda" }
> db.foo.update({'name':'laoda','user':{$exists:true}},{$unset:{"age":65}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{'_id':0})
{ "name" : "yiwa", "age" : 78, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "laoda", "user" : { "phone" : [ 63, 188, 13, 186 ] } }
{ "name" : "sanwa", "age" : 56, "user" : { "phone" : [ 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
{ "age" : 65, "name" : "laoda" } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

5.$push 数组下操作

#把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda" }
> db.array.update({'name':'laoda','age':65},{$push:{"phone":65}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 65 ] }
> db.array.update({'name':'laoda','age':65},{$push:{"phone":[65,75,{'iphone':'188'},85]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 65, [ 65, 75, { "iphone" : "188" }, 85 ] ] }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

6.$pushAll 数组下操作

#一次可以追加多个值到数组
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda" }
> db.array.update({'name':'laoda','age':65},{$pushAll:{"phone":[111,222]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222 ] }
> db.array.update({'name':'laoda','age':65},{$pushAll:{"phone":[111,222]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222 ] }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

7.$addToSet 数组操作

#增加一个值到数组内,而且只有当这个值不在数组内才增加
#插入2次发现,此值存在的时候不插入
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ] ] }
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ] ] }
> db.array.update({'name':'laoda','age':65},{$addToSet:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ], 333 ] }
> db.array.update({'name':'laoda','age':65},{$addToSet:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ], 333 ] }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

8.$pop 删除数组内的一个值

#删除最后一个值:{ pop : { field : 1 } }删除第一个值:{pop : { field : -1 } }
注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ], 333 ] }
> db.array.update({'name':'laoda','age':65},{$pop:{"phone":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ] ] }
> db.array.update({'name':'laoda','age':65},{$pop:{"phone":-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 222, 111, 222, [ 111, 222 ] ] }
> db.array.update({'name':'laoda','age':65},{$pop:{"phone":2}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 222, 111, 222 ] }
> db.array.update({'name':'laoda','age':65},{$pop:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 222, 111 ] }
> db.array.update({'name':'laoda','age':65},{$pop:{"phone":-333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111 ] }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

#测试发现,只要是正整数从最后删除,负数从头部删除。

9.$pull 数组field内删除一个等于value值

> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 333 ] }
> db.array.update({'name':'laoda','age':65},{$pull:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111 ] }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

10.$pullAll 数组field内删除多个值

> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 333, 222 ] }
> db.array.update({'name':'laoda','age':65},{$pullAll:{"phone":[111,222]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{'_id':0})
{ "age" : 65, "name" : "laoda", "phone" : [ 333 ] }  

MongoDB常用操作相关推荐

  1. MongoDB系列:二、MongoDB常用操作练习

    最近在自学MongoDB,在此记录一下,当做学习笔记了(不断更新中)!! 一.背景 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存 ...

  2. MongoDB常用操作总结

    MongoDB 一:Mongodb是什么? 数据库主要分类: 关系型数据库: mysql,oracle,db2,sql,server 关系型数据库中全都是表 非关系型数据库:(no SQL) Mong ...

  3. mongodb常用操作语句

    使用mongodb之前,有必要对mongodb的基本语法进行学习和掌握,我们知道,mongodb是一款非关系型文档数据库,查询效率非常好,其被广泛应用的一个重要原因就是它能够快速响应客户端的查询请求, ...

  4. MongoDB使用小结:一些常用操作分享

    MongoDB使用小结:一些常用操作分享 本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程 ...

  5. mongodb常用语句(集合操作)

    mongodb常用语句(集合操作) 查看集合帮助 db.songs.help(); 查看集合总数据量 db.songs.count(); 查看表空间大小 db.songs.dataSize(); 查看 ...

  6. MongoDB聚合(aggregate)常用操作及示例

    简介 MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果. 有点类似 SQL 语句中的 count(*). 常用操作 表达式 描述 $mat ...

  7. MongoDB实战系列之二:MongoDB的常用操作

    #以服务方式启动mongodb,要求验证 /elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/ ...

  8. MongoDB常用的操作(服务器、数据库、集合)

    MongoDB常用的操作 前面两篇已经介绍了MongoDB系统架构及其BSON数据类型.本文将讲解基本的MongoDB操作. 一.MongoDB启动命令 启动MongoDB systemctl sta ...

  9. mongodb常用命令

    mongodb常用命令 mongodb由C++写就,其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理.关于它的一个最简洁描述为:scalable, high-pe ...

最新文章

  1. 计算机连上网没网络连接,电脑显示本地网络连接但是宽带没连上怎么办? 爱问知识人...
  2. could not initialize proxy - no Session
  3. 利用介质创建额外域控制器
  4. windows下的虚拟机中的ubuntu系统如何连接无线网(wifi)
  5. python加减法计算题 代码_关于《剑指offer》中不用加减乘除做加法的Python代码的问题...
  6. Typora颠覆写作体验的极简好用 Markdown 编辑器基本设置教程
  7. NIO-ByteBuffer
  8. ORB-SLAM2_sim3求解
  9. FineUI之使用SQL脚本从数据库表中生成对应的输入控件
  10. RegExp()方法参数含义和使用方法
  11. HTML中动态的增加和删除表格中的一行
  12. java如何调用webservice_Java如何调用WebService接口
  13. Android项目(完整版+免费版)
  14. 微信公众账号登陆授权开发——1
  15. 弘辽科技:淘宝提升销量不评价有效果吗?不提升销量能做起来吗?
  16. 图灵机停机问题的不可判定性
  17. java手机壁纸_java-爬取手机高清壁纸
  18. Vue3+Vite3 SSR基本搭建
  19. 【Bootstrap】<前端框架>Bootstrap布局容器栅格网格系统
  20. go开发gui还是python开发gui_golang为什么没有官方的gui包?

热门文章

  1. 英特尔SPOSM为行业打造下一代POS解决方案注入创新活力
  2. 6. Linux内核创建一个新进程的过程分析
  3. python中复数采用什么方法提取实部_讲解Python3中NumPy数组寻找特定元素下标的两种方法 python3中怎样实现对一个复数取实部...
  4. 6-13 输出月份英文名 (15分)
  5. 旅游类小程序的优势将带来怎样的旅游体验
  6. 52单片机继电器c语言程序,STC89C52单片机温控继电器代码
  7. 懒人神器:自动生成单元测试插件 Squaretest
  8. QTableWidget编辑单元格内容,按下回车键使焦点转到下一个单元格
  9. 解决微信小程序在IOS端会上下左右滑动的问题
  10. vue 基础入门:vue 的调试工具