Nosql数据库之mongodb基本操作(01)
Posted 橙子山川
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nosql数据库之mongodb基本操作(01)相关的知识,希望对你有一定的参考价值。
Nosql数据库之mongodb基本操作(01)
mongodb
是一个基于分布式文件存储的数据库。和传统的结构性强的关系型数据库相比,mongodb
的特点是以对象的方式作为存储单元(即文档),以BSON格式存储(json的二进制)。由于和结构性强、需要定义数据类型的传统关系数据库相比,mongodb基本单元以对象形式存储,因此扩展性强。
比如db.collectionName.insert(obj)
。其中的collectionName
是集合名称,obj是文档。
Obj = {
Name:”bnbookshop”,
Age:”20”,
Pay:”200万”
}
这是存储了一个bn书店的数据库基本单元。如果我要增加该书店的营业额呢?可以在Obj的基础上添加即可。db.collection.update( criteria, objNew)
criteria是update的查询条件
objNew是更新的对象。
数据库操作之插入db.collectionname.insert()
数据库操作之创建集合 db.createCollection("集合名称")
数据库操作之删除指定集合 db."集合名称".drop()
数据库操作之更新文档 db."集合名称".update()
数据库操作之删除指定文档
db."集合名称".remove("文档对象名称")
简单查询
find({},{属性名称:1}) :注意如果是1,那么只是返回这个属性和对应值,不会返回完整对象
如果返回1:
> db.yangpuqu.find()
{ "_id" : ObjectId("5a6159cae47909c55224c507"), "daxue" : "上海理工大学" }
{ "_id" : ObjectId("5a615a06e47909c55224c508"), "购物中心" : "五角场", "沃尔玛" : "商场" }
{ "_id" : ObjectId("5a615a81e47909c55224c509"), "复旦大学" : "一所大学", "交通大学" : "重点大学" }
> db.yangpuqu.find({},{"复旦大学":1})
{ "_id" : ObjectId("5a6159cae47909c55224c507") }
{ "_id" : ObjectId("5a615a06e47909c55224c508") }
{ "_id" : ObjectId("5a615a81e47909c55224c509"), "复旦大学" : "一所大学" }
> db.yangpuqu.find({},{"交通大学":1})
{ "_id" : ObjectId("5a6159cae47909c55224c507") }
{ "_id" : ObjectId("5a615a06e47909c55224c508") }
{ "_id" : ObjectId("5a615a81e47909c55224c509"), "交通大学" : "重点大学" }
>
如果返回0:
一样的,把对应对象的属性去掉,但这个对象会打印出来。
> db.yangpuqu.find({},{"交通大学":0}))
{ "_id" : ObjectId("5a6159cae47909c55224c507"), "daxue" : "上海理工大学" }
{ "_id" : ObjectId("5a615a06e47909c55224c508"), "购物中心" : "五角场", "沃尔玛" : "商场" }
{ "_id" : ObjectId("5a615a81e47909c55224c509"), "复旦大学" : "一所大学" }
【总结】不管是返回0还是返回1,都是单独设置的,不会影响整体的对象输出;
比较查询
$lt, less than <
$lte,less than and equal <=
$gt,greater than >
$gte,greater than and equal >=
$ne,not equal !=
选择大于15的景点
> db.jingdian.find({"著名景点":{$gt:15}})
{ "_id" : ObjectId("5a6169d3e47909c55224c51a"), "著名景点" : 16, "地理位置" : "北京市区" }
{ "_id" : ObjectId("5a6169d3e47909c55224c51b"), "著名景点" : 17, "地理位置" : "北京市区" }
{ "_id" : ObjectId("5a6169d3e47909c55224c51c"), "著名景点" : 18, "地理位置" : "北京市区" }
{ "_id" : ObjectId("5a6169d3e47909c55224c51d"), "著名景点" : 19, "地理位置" : "北京市区" }
逻辑与 操作:
如果属性相同, 可以简写:
db.jingdian.find({"著名景点":{$lte:12,$gt:8}})
{ "_id" : ObjectId("5a6169d3e47909c55224c513"), "著名景点" : 9, "地理位置" : "北京市区" }
{ "_id" : ObjectId("5a6169d3e47909c55224c514"), "著名景点" : 10, "地理位置" : "北京市区" }
{ "_id" : ObjectId("5a6169d3e47909c55224c515"), "著名景点" : 11, "地理位置" : "北京市区" }
{ "_id" : ObjectId("5a6169d3e47909c55224c516"), "著名景点" : 12, "地理位置" : "北京市区" }
如果属性不同 ,用$and
例如:总数据:
db.shipin.find()
{ "_id" : ObjectId("5a616ca6e47909c55224c51e"), "北京烤鸭价格" : 200, "景点" : 100, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb0e47909c55224c51f"), "北京烤鸭价格" : 200, "景点" : 300, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb5e47909c55224c520"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cc0e47909c55224c521"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cc6e47909c55224c522"), "北京烤鸭价格" : 100, "景点" : 500, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cd2e47909c55224c523"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cd8e47909c55224c524"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "秋季" }
{ "_id" : ObjectId("5a616ce4e47909c55224c525"), "北京烤鸭价格" : 40, "景点" : 290, "季节" : "春季" }
$and的使用:逻辑与
查询北京烤鸭价格在100-200之间,季节是夏季的条件
> db.shipin.find({$and:[{"北京烤鸭价格":{$gte:100,$lte:500}},{"季节":"夏季"}]})
{ "_id" : ObjectId("5a616ca6e47909c55224c51e"), "北京烤鸭价格" : 200, "景点" : 100, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb0e47909c55224c51f"), "北京烤鸭价格" : 200, "景点" : 300, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb5e47909c55224c520"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "夏季" }
$or的使用:逻辑或操作
查询北京烤鸭价格要么价格大于100,要么景点票价小于100
> db.shipin.find({$or:[{"北京烤鸭价格":{$gt:100}},{"景点":{$lte:100}}]})
{ "_id" : ObjectId("5a616ca6e47909c55224c51e"), "北京烤鸭价格" : 200, "景点" : 100, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb0e47909c55224c51f"), "北京烤鸭价格" : 200, "景点" : 300, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb5e47909c55224c520"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cc0e47909c55224c521"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cd2e47909c55224c523"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cd8e47909c55224c524"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "秋季" }
查询景点价格:要么90,要么100
方法1:
> db.shipin.find({$or:[{"景点":90},{"景点":100}]})
{ "_id" : ObjectId("5a616ca6e47909c55224c51e"), "北京烤鸭价格" : 200, "景点" : 100, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cd2e47909c55224c523"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cd8e47909c55224c524"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "秋季" }
方法2:$in 操作
db.集合名称({属性:{$in:[条件1,条件2...]}})
db.shipin.find({"景点":{$in:[90,100]}})
{ "_id" : ObjectId("5a616ca6e47909c55224c51e"), "北京烤鸭价格" : 200, "景点" : 100, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cd2e47909c55224c523"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cd8e47909c55224c524"), "北京烤鸭价格" : 40, "景点" : 90, "季节" : "秋季" }
查询景点价格:不能小于295
方法1:
> db.shipin.find({"景点":{$gte:290}})
{ "_id" : ObjectId("5a616cb0e47909c55224c51f"), "北京烤鸭价格" : 200, "景点" : 300, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb5e47909c55224c520"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cc0e47909c55224c521"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cc6e47909c55224c522"), "北京烤鸭价格" : 100, "景点" : 500, "季节" : "冬季" }
{ "_id" : ObjectId("5a616ce4e47909c55224c525"), "北京烤鸭价格" : 40, "景点" : 290, "季节" : "春季" }
方法2: 用$not实现
find({属性名:{$not:{条件1}}})
db.shipin.find({"景点":{$not:{$lt:290}}})
{ "_id" : ObjectId("5a616cb0e47909c55224c51f"), "北京烤鸭价格" : 200, "景点" : 300, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cb5e47909c55224c520"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "夏季" }
{ "_id" : ObjectId("5a616cc0e47909c55224c521"), "北京烤鸭价格" : 200, "景点" : 500, "季节" : "冬季" }
{ "_id" : ObjectId("5a616cc6e47909c55224c522"), "北京烤鸭价格" : 100, "景点" : 500, "季节" : "冬季" }
{ "_id" : ObjectId("5a616ce4e47909c55224c525"), "北京烤鸭价格" : 40, "景点" : 290, "季节" : "春季" }
查询景点价格:不能小于295 ,不能大于400
用数组的方式发现,报错:报错信息如下:
Error: error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "$not needs a regex or a document",
"code" : 2
}
数组查询
$all
key.index
$size
$slice
查询发达城市中:
1 查询既包括广州有包括汕头的城市 $all
2 查询第二个城市是东莞的数组 key.index
3 查询只有两个城市的数组 $size
4 查询有广州的城市,但只取前三个结果 $slice
这个练习留给读者吧(自定义数据结构..)!
介绍:每日一小步,愿与你同行~
以上是关于Nosql数据库之mongodb基本操作(01)的主要内容,如果未能解决你的问题,请参考以下文章