目录
数据库基本命令操作
数据库常用命令
Collection聚集集合
用户相关
错误信息操作
查看聚集集合基本信息
索引操作
查询操作
1.查询所有
2.显示指定列
3.使用and操作
4.使用or操作
5.使用<, <=, >, >= ($lt, $lte, $gt, $gte )操作,取模运算$mod
6.使用in, not in ($in, $nin)
7.匹配null操作
8.使用like (mongoDB 支持正则表达式)
9.使用distinct、count查询
10.数组查询 (mongoDB自己特有的)(all,size)
11.exists判断是否存在,type判断类型,Sort排序
12.$elemMatch数组元素匹配
更新操作
1.update( criteria, objNew, upsert, multi)、save() 方法
save()方法相当于upsert与multi 都为true时候
2.$inc 对于数字字段的值增加value
3.$set 相当于sql的set field = value
4.$unset 删除字段
5.$push 数组下操作
6.$pushAll 数组下操作
7.$addToSet 数组操作
8.$pop 删除数组内的一个值
9.$pull 数组field内删除一个等于value值
10.$pullAll 数组field内删除多个值
首页 数据库 mysql教程 Mongodb数据库命令端常用操作

Mongodb数据库命令端常用操作

Jun 07, 2016 pm 03:56 PM
mongodb 命令 基本 常用 操作 数据库

数据库基本命令操作 数据库常用命令 1、Help查看命令提示 help db.help(); db.yourColl.help(); db.youColl.find().help(); rs.help(); 2、切换/创建数据库 use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库 3、查询所有数据库 show dbs; 4、删

数据库基本命令操作

数据库常用命令

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、创建索引
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();
登录后复制

查询操作

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 ] } }
登录后复制

2.显示指定列

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

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

> db.foo.find({},{&#39;_id&#39;:0,&#39;name&#39;:1,&#39;user&#39;: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 ] } }
登录后复制

3.使用and操作

#名字是yiwa且年龄是25岁

> db.foo.find({&#39;name&#39;:&#39;yiwa&#39;,&#39;age&#39;:25},{&#39;_id&#39;:0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
登录后复制

4.使用or操作

#名字是yiwa或者年龄是75岁

> db.foo.find({&#39;$or&#39;:[{&#39;name&#39;:&#39;yiwa&#39;},{&#39;age&#39;:75}]},{&#39;_id&#39;:0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
登录后复制

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

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

> db.foo.find({&#39;age&#39;:{&#39;$gte&#39;:15,&#39;$lte&#39;:75}},{&#39;_id&#39;: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 ] } }
登录后复制

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

> db.foo.find({&#39;age&#39;:{&#39;$mod&#39;:[3,1]}},{&#39;_id&#39;:0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
登录后复制

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

#名字不是siwa且年龄在[15,25,85]

> db.foo.find({&#39;name&#39;:{&#39;$nin&#39;:[&#39;siwa&#39;]},&#39;age&#39;:{&#39;$in&#39;:[15,25,85]}},{&#39;_id&#39;:0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "sanwa", "age" : 85, "user" : { "phone" : [ 186 ] } }
登录后复制

7.匹配null操作

#名字是null的

> db.foo.find({&#39;name&#39;:null},{&#39;_id&#39;:0})
> 
登录后复制

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

#名字like%iwa%的 #名字like yi%的

> db.foo.find({&#39;name&#39;:/iwa/},{&#39;_id&#39;:0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
> db.foo.find({&#39;name&#39;:/^yi/},{&#39;_id&#39;:0})
{ "name" : "yiwa", "age" : 25, "user" : { "phone" : [ 123, 13, 186 ] } }
登录后复制

9.使用distinct、count查询

> db.foo.distinct(&#39;name&#39;)
[ "yiwa", "erwa", "sanwa", "siwa" ]
> db.foo.count()
4
登录后复制

#distinct结合条件,排序使用

> db.foo.find({},{&#39;_id&#39;: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",{&#39;user.phone&#39;:{&#39;$in&#39;:[63,65,186]}}).sort({&#39;age&#39;:1})
[ 25, 85, 95 ]
> db.foo.distinct("age",{&#39;user.phone&#39;:{&#39;$in&#39;:[63,65,186]}}).sort({&#39;age&#39;:-1})
[ 25, 85, 95 ]
> db.foo.distinct("age",{&#39;user.phone&#39;:{&#39;$in&#39;:[63,65,186]}})
[ 25, 95, 85 ]
登录后复制

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

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

#电话中含有186的

> db.foo.find({&#39;user.phone&#39;:186},{&#39;_id&#39;: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 ] } }
登录后复制

#电话中含有188,186的

> db.foo.find({&#39;user.phone&#39;:{&#39;$all&#39;:[188,186]}},{&#39;_id&#39;:0})
{ "name" : "erwa", "age" : 75, "user" : { "phone" : [ 63, 188, 13, 186 ] } }
登录后复制

#电话中有2个值的

> db.foo.find({&#39;user.phone&#39;:{&#39;$size&#39;:2}},{&#39;_id&#39;:0})
{ "name" : "siwa", "age" : 15, "user" : { "phone" : [ 63, 137 ] } }
登录后复制

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

#name中值是字符型,age中值是整型,按name升序,age降序

> db.foo.find({&#39;name&#39;:{&#39;$type&#39;:2},&#39;age&#39;:{&#39;$type&#39;:16}},{&#39;_id&#39;:0}).sort({&#39;name&#39;:1,&#39;age&#39;:-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 ] } }
登录后复制

#name中值存在的:true #name中值不存在的:false

> db.foo.find({&#39;name&#39;:{&#39;$exists&#39;:true}},{&#39;_id&#39;: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({&#39;name&#39;:{&#39;$exists&#39;:false}},{&#39;_id&#39;:0})
> 
登录后复制

12.$elemMatch数组元素匹配

#插入测试数据

> db.foo.save({x:[{&#39;a&#39;:1,&#39;b&#39;:5},999,&#39;liw&#39;,{&#39;a&#39;:12},{&#39;b&#39;:100}]})
WriteResult({ "nInserted" : 1 })
登录后复制

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

> db.foo.find({&#39;x&#39;:{&#39;$elemMatch&#39;:{&#39;a&#39;:1,b:{&#39;$gt&#39;:4}}}},{&#39;_id&#39;:0})
{ "x" : [ { "a" : 1, "b" : 5 }, 999, "liw", { "a" : 12 }, { "b" : 100 } ] }
> db.foo.find({&#39;x.a&#39;:1,&#39;x.b&#39;:5},{&#39;_id&#39;:0})
{ "x" : [ { "a" : 1, "b" : 5 }, 999, "liw", { "a" : 12 }, { "b" : 100 } ] }
登录后复制

更新操作

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({},{&#39;_id&#39;: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({&#39;age&#39;:{$gte:30}},{$set:{&#39;age&#39;:55}},fasle,false)
2014-05-31T19:36:05.407+0800 ReferenceError: fasle is not defined
> db.foo.update({&#39;age&#39;:{$gte:30}},{$set:{&#39;age&#39;:55}},false,false)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
> db.foo.find({},{&#39;_id&#39;: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({&#39;age&#39;:{$gte:30}},{$set:{&#39;age&#39;:56}},false,false)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{&#39;_id&#39;: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({&#39;age&#39;:{$gte:300}},{$set:{&#39;age&#39;:56}},true,false)
WriteResult({
	"nMatched" : 0,
	"nUpserted" : 1,
	"nModified" : 0,
	"_id" : ObjectId("5389bee8afce65313a5614fa")
})
> db.foo.find({},{&#39;_id&#39;: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({&#39;age&#39;:{$gte:30}},{$set:{&#39;age&#39;:56}},true,true)
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 2 })
> db.foo.find({},{&#39;_id&#39;: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 }
登录后复制

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

#年龄大于30的 全部age值增加20

> db.foo.find({},{&#39;_id&#39;: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({&#39;age&#39;:{$gte:30}},{$inc:{&#39;age&#39;:20}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{&#39;_id&#39;: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 ] } }
登录后复制

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

#年龄=56的,设置为名字='laoda',年龄=65

> db.foo.find({},{&#39;_id&#39;: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({&#39;age&#39;:56},{$set:{&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{&#39;_id&#39;: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 ] } }
登录后复制

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

4.$unset 删除字段

#查询name='laoda',user字段存在的数据中,删除age=65的age字段

> db.foo.find({},{&#39;_id&#39;: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({&#39;name&#39;:&#39;laoda&#39;,&#39;user&#39;:{$exists:true}},{$unset:{"age":65}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.foo.find({},{&#39;_id&#39;: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" }
登录后复制

5.$push 数组下操作

#把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去

> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda" }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$push:{"phone":65}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 65 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$push:{"phone":[65,75,{&#39;iphone&#39;:&#39;188&#39;},85]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 65, [ 65, 75, { "iphone" : "188" }, 85 ] ] }
登录后复制

6.$pushAll 数组下操作

#一次可以追加多个值到数组

> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda" }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pushAll:{"phone":[111,222]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pushAll:{"phone":[111,222]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222 ] }
登录后复制

7.$addToSet 数组操作

#增加一个值到数组内,而且只有当这个值不在数组内才增加 #插入2次发现,此值存在的时候不插入

> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ] ] }
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ] ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$addToSet:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ], 333 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$addToSet:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ], 333 ] }
登录后复制

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

#删除最后一个值:{ $pop : { field : 1 } }删除第一个值:{ $pop : { field : -1 } }
注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条

> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ], 333 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pop:{"phone":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 222, 111, 222, [ 111, 222 ] ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pop:{"phone":-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 222, 111, 222, [ 111, 222 ] ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pop:{"phone":2}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 222, 111, 222 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pop:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 222, 111 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pop:{"phone":-333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111 ] }
登录后复制

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

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

> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 333 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pull:{"phone":333}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111 ] }
登录后复制

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

> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 111, 333, 222 ] }
> db.array.update({&#39;name&#39;:&#39;laoda&#39;,&#39;age&#39;:65},{$pullAll:{"phone":[111,222]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.array.find({},{&#39;_id&#39;:0})
{ "age" : 65, "name" : "laoda", "phone" : [ 333 ] }
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

nodejs和vuejs区别 nodejs和vuejs区别 Apr 21, 2024 am 04:17 AM

Node.js 是一种服务器端 JavaScript 运行时,而 Vue.js 是一个客户端 JavaScript 框架,用于创建交互式用户界面。Node.js 用于服务器端开发,如后端服务 API 开发和数据处理,而 Vue.js 用于客户端开发,如单页面应用程序和响应式用户界面。

在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

navicat过期怎么办 navicat过期怎么办 Apr 23, 2024 pm 12:12 PM

解决 Navicat 过期问题的方法包括:续订许可证;卸载并重新安装;禁用自动更新;使用 Navicat Premium Essentials 免费版;联系 Navicat 客户支持。

前端学nodejs难吗 前端学nodejs难吗 Apr 21, 2024 am 04:57 AM

对于前端开发人员而言,学习 Node.js 的难度取决于其 JavaScript 基础、服务器端编程经验、命令行熟悉度和学习风格。学习过程包括入门级和进阶级的模块,重点关注基础概念、服务器端架构、数据库集成和异步编程。总体而言,对于具备扎实 JavaScript 基础并愿意投入时间和精力的开发人员,学习 Node.js 并不困难,但对于缺乏相关经验的人来说,可能需要克服一定的挑战。

Astar质押原理、收益拆解、空投项目及策略 & 操作保姆级攻略 Astar质押原理、收益拆解、空投项目及策略 & 操作保姆级攻略 Jun 25, 2024 pm 07:09 PM

目录Astar Dapp 质押原理质押收益 拆解潜在空投项目:AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap 质押策略 & 操作“AstarDapp质押”今年初已升级至V3版本,对质押收益规则做了不少调整。目前首个质押周期已结束,第二质押周期的“投票”子周期刚开始。要获取“额外奖励”收益,需把握此关键阶段(预计持续至6月26日,现余不到5天)。我将细致拆解Astar质押收益,

Go WebSocket 如何与数据库集成? Go WebSocket 如何与数据库集成? Jun 05, 2024 pm 03:18 PM

如何将GoWebSocket与数据库集成:设置数据库连接:使用database/sql包连接到数据库。将WebSocket消息存储到数据库:使用INSERT语句将消息插入数据库。从数据库检索WebSocket消息:使用SELECT语句检索数据库中的消息。

如何在PHP中处理数据库连接错误 如何在PHP中处理数据库连接错误 Jun 05, 2024 pm 02:16 PM

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

See all articles