SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表链接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
1.客户端sql
# 使用自带的客户端,找到安装目录,执行bin目录下的mongo.exe mongo.exe # 使用admin用户和密码 123456 链接到本地的 MongoDB 服务上(若是要链接到指定的数据库上,须要在localhost后面继续追数据库的名字,如:localhost/test): mongodb://admin:123456@localhost/
2.查看全部的数据库mongodb
show dbs
3.建立数据库数据库
use XXX # XXX是数据库名字 # 说明:新建立的数据库若是里面没有数据,使用show dbs查看时会看不到,须要插入数据后才能看到。
4.删除数据库ide
# 首先要转到该数据库下 use XXX # 而后删除该数据库 db.dropDatabase
> use cmdb_t > db.createCollection("search_pro") # 先建立集合,相似数据库中的表 > show tables search_pro > db.cmdb_t.drop() # 删除全部集合 true > show tables
# 插入数据 >db.表名.insert({'pkg_name':'searchops', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }) # 建立变量并插入变量 > document= {'pkg_name':'searchops2' , tags: ['mongodb', 'database', 'NoSQL'], likes: 200 } > db.search_project.insert(document)
db.collection.update(
<query>, #update的查询条件
<update>, #update的对象和要更新的操做(如$,$inc...)等
{
upsert: <boolean>, # 可选,如不存在update记录,是否插入objNew,true为插入,默认false不插入。
multi: <boolean>, # 可选,默认false,只更新找到的第一条,参数为true则按条件查出的多条记录所有更新。
writeConcern: <document> # 可选,抛出异常的级别
}
)ui
update语法规则spa
db.collection.update( <query>, #update的查询条件 <update>, #update的对象和要更新的操做(如$,$inc...)等 { upsert: <boolean>, # 可选,如不存在update记录,是否插入objNew,true为插入,默认false不插入。 multi: <boolean>, # 可选,默认false,只更新找到的第一条,参数为true则按条件查出的多条记录所有更新。 writeConcern: <document> # 可选,抛出异常的级别 } )
# 找到pkg_name 为searchops2的项,将title设置为search_v3 db.search_project.update({'pkg_name':'searchops2'},{$set:{'title':'search_v3'}}) # 只改一条数据 db.search_project.update({'pkg_name':'searchops2'},{$set:{'title':'search_v3'}},{multi:true}) # 改全部pkg_name为searchops2的项
db.collection.save( <document>, # 文档数据 { writeConcern: <document> # 可选,抛出异常的级别。 } )
db.collection.save( <document>, # 文档数据 { writeConcern: <document> # 可选,抛出异常的级别。 } )
# 会将相同id的数据中的内容替换成save中的内容 db.search_project.save({ "_id" : ObjectId("5e1ebab7ec1107d60b203516"), "pkg_name" : "search_v3", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 200 })
db.collection.remove( <query>, # 可选,删除的文档的条件。 { justOne: <boolean>, # 可选,值为true或1只删除一个文档,默认值 false删除全部匹配条件的文档。 writeConcern: <document> # 可选,抛出异常的级别。 } )
db.collection.remove( <query>, # 可选,删除的文档的条件。 { justOne: <boolean>, # 可选,值为true或1只删除一个文档,默认值 false删除全部匹配条件的文档。 writeConcern: <document> # 可选,抛出异常的级别。 } )
db.collection.remove( <query>, # 可选,删除的文档的条件。 { justOne: <boolean>, # 可选,值为true或1只删除一个文档,默认值 false删除全部匹配条件的文档。 writeConcern: <document> # 可选,抛出异常的级别。 } )
接下来咱们移除 title 为 'MongoDB 教程' 的文档: # 删除全部符合条件的数据 >db.search_project.remove({'likes':100}) # 只删除第一条找到的记录 >db.search_project.remove({'likes':100},1) 若是你只想删除第一条找到的记录能够设置 justOne 为 1,以下所示: # 删除全部数据,能够使用如下方式(相似常规 SQL 的 truncate 命令): >db.col.remove({})
>db.collection.find(query, projection) query :可选,使用查询操做符指定查询条件 projection :可选,使用投影操做符指定返回的键。查询时返回文档中全部键值, 只需省略该参数便可(默认省略)。 >db.col.find().pretty() pretty() 方法以格式化的方式来显示全部文档。
>db.collection.find(query, projection) query :可选,使用查询操做符指定查询条件 projection :可选,使用投影操做符指定返回的键。查询时返回文档中全部键值, 只需省略该参数便可(默认省略)。 >db.col.find().pretty() pretty() 方法以格式化的方式来显示全部文档。
操做 | 格式 | 范例 | RDBMS中的相似语句 |
---|---|---|---|
等于 | {<key>:<value> } |
db.col.find({"likes":"100"}).pretty() |
where likes = '100' |
小于 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小于或等于 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大于 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大于或等于 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
# 查找全部数据 db.search_project.find(); # and db.col.find({"likes":100, "pkg_name":"search"}).pretty() #or db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty() # and 和 or >db.col.find({"likes": {$gt:50}, $or: [{"pkg_name": "search"},{"title": "search_v3"}]}).pretty()
# $type 指定查找类型,指定查找title 为 String 的数据 db.search_project.find({"title" : {$type : 'string'}})
{
"_id":ObjectId("52ffc33cd85242f436000001"),
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin",
"address": [
{
"building": "22 A, Indiana Apt",
"pincode": 123456,
"city": "Los Angeles",
"state": "California"
},
{
"building": "170 A, Acropolis Apt",
"pincode": 456789,
"city": "Chicago",
"state": "Illinois"
}]
} code
数据文档对象
{ "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address": [ { "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }, { "building": "170 A, Acropolis Apt", "pincode": 456789, "city": "Chicago", "state": "Illinois" }] }
>db.users.findOne({"name":"Tom Benzamin"},{"address":1})
{
"_id":ObjectId("52ffc4a5d85242602e000000"),
"building": "22 A, Indiana Apt",
"pincode": 123456,
"city": "Los Angeles",
"state": "California"
} blog
用户地址文档教程
{ "_id":ObjectId("52ffc4a5d85242602e000000"), "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }
{
"_id":ObjectId("52ffc33cd85242f436000001"),
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin",
"address_ids": [
ObjectId("52ffc4a5d85242602e000000")
]
}
用户文档
{ "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [ ObjectId("52ffc4a5d85242602e000000") ] }
>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1}) >var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})