MongoDB基础操作
admin
2023-01-26 12:53:55
0

mongoDB:

有集合和文档概念
集合==表
文档==数据库表里的行


!!建立数据库(bosenru)

> use bosenru;
switched to db bosenru

!!往bosenrui里插入一张表(t1),表里插入(x:1)这个字段(x为字段,1为它的值)

> db.ti.insert({x:1});
WriteResult({ "nInserted" : 1 })

查看一下

>show tadabases;

admin     (empty)
bosenrui  0.078GB
local     0.078GB

> use bosenru
switched to db bosenru

> show tables;
system.indexes
ti

> db.t1.find()
{ "_id" : ObjectId("5602402d575c3e0a6920d326"), "x" : 1 }
是它唯一的标实
ObjectId("5602402d575c3e0a6920d326")


> db.t1.insert({x:2})
WriteResult({ "nInserted" : 1 })
> db.t1.find()
{ "_id" : ObjectId("5602402d575c3e0a6920d326"), "x" : 1 }
{ "_id" : ObjectId("560240ea575c3e0a6920d327"), "x" : 2 }

!!只查询一个数据:
> db.t1.findOne()
{ "_id" : ObjectId("56023de2575c3e0a6920d324"), "x" : 1 }

(One的首字母要大写)

!!删掉bosenrui这个库:

> db.dropDatabase()
{ "dropped" : "bosenrui", "ok" : 1 }

(Database的首字母要大写)

!!使用集合(表),文档(行记录)
插入多条数据:
mongodb可以使用json语法插入多条数据

_id:全局唯一值



> use bosenrui
switched to db bosenrui

指定(_id)为2
> db.t1.insert({x:1,_id:2});
WriteResult({ "nInserted" : 1 })


WriteResult({ "nInserted" : 1 })

> db.t1.find()
{ "_id" : 2, "x" : 1 }

> db.t1.findOne()
{ "_id" : 2, "x" : 1 }

再插入db.t1.insert({x:1,_id:2}),会有报错,是主键冲突。(不要去指定_id的值,让系统给分配)


> db.t1.insert({x:1,_id:2})
WriteResult({
     "nInserted" : 0,
     "writeError" : {
          "code" : 11000,
          "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: bosenru.t1.$_id_  dup key: { : 2.0 }"


!!插入多条数据:


> for(i=1;i<100;i++)db.t1.insert({x:i})
WriteResult({ "nInserted" : 1 })

> db.t1.find()
{ "_id" : ObjectId("560247edd5f225b12c0b67aa"), "x" : 1 }
{ "_id" : ObjectId("56024852d5f225b12c0b67ab"), "x" : 1 }
{ "_id" : ObjectId("56024852d5f225b12c0b67ac"), "x" : 2 }
{ "_id" : ObjectId("56024852d5f225b12c0b67ad"), "x" : 3 }
{ "_id" : ObjectId("56024852d5f225b12c0b67ae"), "x" : 4 }

Type "it" for more(可以用it进行翻页)

> db.t1.find().count()
100
总共有100条记录


> db.t1.find().skip(1).limit(5).sort({x:1})
{ "_id" : ObjectId("56024852d5f225b12c0b67ab"), "x" : 1 }
{ "_id" : ObjectId("56024852d5f225b12c0b67ac"), "x" : 2 }
{ "_id" : ObjectId("56024852d5f225b12c0b67ad"), "x" : 3 }
{ "_id" : ObjectId("56024852d5f225b12c0b67ae"), "x" : 4 }
{ "_id" : ObjectId("56024852d5f225b12c0b67af"), "x" : 5 }


> db.t1.find().skip(1).limit(5).sort({x:-1})
{ "_id" : ObjectId("56024852d5f225b12c0b680c"), "x" : 98 }
{ "_id" : ObjectId("56024852d5f225b12c0b680b"), "x" : 97 }
{ "_id" : ObjectId("56024852d5f225b12c0b680a"), "x" : 96 }
{ "_id" : ObjectId("56024852d5f225b12c0b6809"), "x" : 95 }
{ "_id" : ObjectId("56024852d5f225b12c0b6808"), "x" : 94 }

!!跳过1行,查看5行记录,根据(x)这个字段,(1)为顺序值(正序),(-1)(倒序)

查看(_id:2)的数据

> db.t1.find({'_id':2})
{ "_id" : 2, "x" : 1 }

!查看(x:?)的数据

> db.t1.find({'x':2})
{ "_id" : ObjectId("56024852d5f225b12c0b67ac"), "x" : 2 }
> db.t1.find({'x':4})
{ "_id" : ObjectId("56024852d5f225b12c0b67ae"), "x" : 4 }

!!把(x:1)的数据更新成(x:999)

> db.t1.update({x:1},{x:999})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

再查看一下(x:1)的数据
> db.t1.find({'x':1})
{ "_id" : ObjectId("56024852d5f225b12c0b67ab"), "x" : 1 }
{ "_id" : 2, "x" : 1 }

再查看一下(x:999)的数据
> db.t1.find({'x':999})
{ "_id" : ObjectId("560247edd5f225b12c0b67aa"), "x" : 999 }

*如果集合中需要跟新的值有重复的那么只更新第一个

!!多字段更新时,只需更新部分字段

> db.t1.insert({x:100,y:100,z:100})
WriteResult({ "nInserted" : 1 })

> db.t1.find()
{ "_id" : ObjectId("56024f44d5f225b12c0b680e"), "x" : 100, "y" : 100, "z" : 100 }

!!更新z为100时,y为99

db.t1.update({z:100},{y:99})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

查看一下:

> db.t1.find()
{ "_id" : ObjectId("56024f44d5f225b12c0b680e"), "y" : 99 }

这时(z,x)的值找不到

> db.t1.find({'z':100})
> db.t1.find({'x':100})

可以找到(y:99)的值
> db.t1.find({'y':99})
{ "_id" : ObjectId("56024f44d5f225b12c0b680e"), "y" : 99 }

*这种方法是错的

!!正确的方法:

重新插入这个条数据

> db.t1.insert({x:100,y:100,z:100})
WriteResult({ "nInserted" : 1 })


> db.t1.update({z:100},{$set:{y:99}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })


查看一下:

> db.t1.find()
{ "_id" : ObjectId("56025482d5f225b12c0b6810"), "x" : 100, "y" : 99, "z" : 100 }


db.t1.update({z:100},{$set:{y:99}}),set为部分更新操作符,更新存在的字段,不存在的字段会保持原样。


!!更新集合中不存在数据:

> db.t1.find({y:100})
>
没有这条数据

把(y:100)更新成为(y:99)

> db.t1.update({y:100},{y:999},true)
WriteResult({
     "nMatched" : 0,
     "nUpserted" : 1,
     "nModified" : 0,
     "_id" : ObjectId("5602576b03e4970d981cb3bf")

查看一下:

> db.t1.find({y:999})
{ "_id" : ObjectId("5602576b03e4970d981cb3bf"), "y" : 999 }


!!如何批量更新:

将(c:1)改为(c:2)

插入三条数据:

> db.t1.insert({c:1})
WriteResult({ "nInserted" : 1 })
> db.t1.insert({c:1})
WriteResult({ "nInserted" : 1 })
> db.t1.insert({c:1})
WriteResult({ "nInserted" : 1 })

查看一下:

> db.t1.find()

{ "_id" : ObjectId("56025d10d5f225b12c0b6814"), "c" : 1 }
{ "_id" : ObjectId("56025d28d5f225b12c0b6815"), "c" : 1 }
{ "_id" : ObjectId("56025d29d5f225b12c0b6816"), "c" : 1 }

进行批量更新:

> db.t1.update({c:1},{$set:{c:2}},false,true)
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })

查看一下:

> db.t1.find()

{ "_id" : ObjectId("56025d10d5f225b12c0b6814"), "c" : 2 }
{ "_id" : ObjectId("56025d28d5f225b12c0b6815"), "c" : 2 }
{ "_id" : ObjectId("56025d29d5f225b12c0b6816"), "c" : 2 }

!!如何删除一个值:

> db.t1.remove({c:2})
WriteResult({ "nRemoved" : 3 })

查看一下:

> db.t1.find()
>
没有数据了

这个方法可以删除集合下的文档

!!如何删除集合:

> db.t1.drop()
true

查看一下:

> show tables;
system.indexes

没有t1这个文档了

相关内容

热门资讯

白宫发布《科学:新的黄金时代》... 据白宫7月21日消息,白宫科技政策办公室、管理与预算办公室联合发布《科学:新的黄金时代》报告。本次备...
民营商业火箭首次从长三角东海海... 北京时间7月22日10时54分,我国太原卫星发射中心在上海东部海域使用引力一号遥四运载火箭,将搭载的...
美威胁袭伊基础设施,伊朗军方:... △当地时间21日,船只在霍尔木兹海峡航行伊朗武装部队哈塔姆安比亚中央总部当地时间22日发布声明称,美...
扑翼机器人问世:像潜水鸟一样在... 潜鸟、海鸥、海鹦和海燕,是自然界中约100种既能飞行又能游泳的鸟类。这些潜水鸟能够俯冲入水追逐猎物,...
当科学家走进西部脑谷:这里有望... 7月22日,2026天府科学家创新发展大会暨成都科产融合对接活动锦江经开区脑机接口专场在锦江区成功举...
女子身份证丢失后名下出现“吸毒... 四川籍的庞女士定居浙江宁波多年,她怎么也没想到,因丢失身份证一事,竟让她陷入长达7年“自证清白”的困...
省农科院成功研发我省首个高粱全... 近日,记者从省农科院获悉,该院作物资源研究所、农业生物技术研究所联合石家庄博瑞迪生物,成功研制出省内...
消息称AMD与Anthropi... IT之家 7 月 22 日消息,据华尔街日报消息,AMD 与 Anthropic 达成了一项价值数百...
独家!苹果iPhone18系列... 7月22日,中国证券报记者从产业链人士处独家获悉,进入7月,苹果iPhone 18系列手机已在量产,...
29岁的党鑫蕊倒在广西泥泞山路... 7月11日晚一通叮嘱,成了父子最后的对话;几天后父亲在殡仪馆见到一身泥的儿子,才知道“他走得有多难。...