博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB基础操作
阅读量:5876 次
发布时间:2019-06-19

本文共 5307 字,大约阅读时间需要 17 分钟。

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这个文档了

本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1869916

转载地址:http://eqkix.baihongyu.com/

你可能感兴趣的文章
PHP盛宴——经常使用函数集锦
查看>>
重写 Ext.form.field 扩展功能
查看>>
Linux下的搜索查找命令的详解(locate)
查看>>
福利丨所有AI安全的讲座里,这可能是最实用的一场
查看>>
开发完第一版前端性能监控系统后的总结(无代码)
查看>>
Python多版本情况下四种快速进入交互式命令行的操作技巧
查看>>
MySQL查询优化
查看>>
【Redis源码分析】如何在Redis中查找大key
查看>>
关于链接文件的探讨
查看>>
android app启动过程(转)
查看>>
Linux—源码包安装
查看>>
JDK8中ArrayList的工作原理剖析
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
乌克兰基辅一世遗修道院起火 现场火光照亮夜空
查看>>
[iOS 10 day by day] Day 2:线程竞态检测工具 Thread Sanitizer
查看>>
Centos/Ubuntu下安装nodejs
查看>>
关于浏览器的cookie
查看>>