MongoDB使用insert()或save()方法向集合中插入文档
db.COLLECTION_NAME.insert(document)
db.COLLECTION_NAME.save(document)
save():如果_id主键存在则更新数据,如果不存在就插入数据。改方法已废弃可以使用insertOne()或replaceOne()来代替。
insert():若插入的数据主键已经存在,则会抛出DuplicateKeyException异常,提示主键重复。不保存当前数据。
3.2版本后新增了insertOne()和insertMany()函数用于向集合插入一个新文档或多个文档。
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
参数说明:
document:要写入的文档
writeConcern:写入策略,默认为1.即要求确认写操作,0是不要求。
ordered:指定是否按顺序写入,默认为true。
更新文档
update()方法:用于更新已存在的文档。
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
query:update的查询条件,类似sql update查询内where后面的条件。
update:update的对象和一些更新的操作符等,也可以理解为sql update查询内的set值
upsert:可选,这个参数的意思是,如果不存在update的记录是否插入改对象,true为插入,默认是false不插入
multi:可选,mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来的多条记录全部更新
writeConcern:可选,抛出异常的级别
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息
> db.col.find().pretty()
{
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
save()方法:通过传入的文档来替换已有文档,_id主键存在就更新,不存在就插入。
db.collection.save( <document>, { writeConcern: <document> } )
参数说明:
document:文档数据
writeConcern:可选,抛出异常的级别
db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
删除文档
remove函数用来移除集合中的数据
db.collection.remove(
<query>,
<justOne>
)
参数说明:
query:可选,删除的文档的条件
justOne:可选,如果设置为true或1,则只删除一个文档,如果不设置改参数或使用默认值false,则删除所有匹配的文档
writeConcern:可选,抛出异常的级别
删除所有的文档:
db.COLLECTION_NAME.remove({})
查询文档
find()方法:以非结构化的方式显示所有文档
db.collection.find(query, projection)
参数说明:
query:可选,使用查询操作符指定查询条件
projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可默认省略
如果你需要以易读的方式来读取数据,可以使用pretty()方法:
db.col.find().pretty()
findOne()方法:它只返回一个文档。
MongoDB 与 RDBMS Where 语句比较
操作
|
格式
|
范例
|
RDBMS中的类似语句
|
等于
|
{:
}
|
db.col.find({"by":"菜鸟教程"}).pretty()
|
where by = '菜鸟教程'
|
小于
|
{:{$lt:}}
|
db.col.find({"likes":{$lt:50}}).pretty()
|
where likes < 50
|
小于或等于
|
{:{$lte:}}
|
db.col.find({"likes":{$lte:50}}).pretty()
|
where likes <= 50
|
大于
|
{:{$gt:}}
|
db.col.find({"likes":{$gt:50}}).pretty()
|
where likes > 50
|
大于或等于
|
{:{$gte:}}
|
db.col.find({"likes":{$gte:50}}).pretty()
|
where likes >= 50
|
不等于
|
{:{$ne:}}
|
db.col.find({"likes":{$ne:50}}).pretty()
|
where likes != 50
|
MongoDB AND 条件
MongoDB的find()方法可以传入多个键key,每个键以逗号隔开,即常规SQL的AND条件
>db.col.find({key1:value1, key2:value2}).pretty()
MongoDB OR 条件
mongoDB OR条件语句使用了关键字$or
>db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()