目次
数据库基本命令操作
数据库常用命令
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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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

MySQLi を使用して PHP でデータベース接続を確立する方法: 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

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

navicat の有効期限が切れた場合の対処方法 navicat の有効期限が切れた場合の対処方法 Apr 23, 2024 pm 12:12 PM

Navicat の有効期限の問題を解決するには、ライセンスを更新する、自動更新を無効にする、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 バージョンにアップグレードされ、ステーキング収益に多くの調整が加えられましたルール。現在、最初のステーキング サイクルが終了し、2 番目のステーキング サイクルの「投票」サブサイクルが始まったばかりです。 「追加報酬」特典を獲得するには、この重要な段階を把握する必要があります (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