MongoDB的常用操作
显示数据库
显示已有的数据库
show dbs
显示当前的数据库
db
创建、使用数据库
use可以切换到指定的数据库,如果该数据库不存在时,会创建该数据库。
use nodejsBook
或
switched to db nodejsBook
插入文档
插入单个文档
db.file1.insertOne({title:'文档1',time:'2020-01-01',author:{age:18,name:'leeamazing'}})
在上述例子’file1’就是一个集合,如果该集合不存在则会创建。
执行插入命令后控制台会输出
{
"acknowledged":true,
"insertedld":ObjectId("xxxxxxxxxxx")
}
如果没有指定文档中的"_id"字段,那么MongoDB会自动给该字段进行赋值,类型为ObjectId。
要查询上述例子,可以用db.collection.find()方法,如下:
db.file1.find({title:'文档1'})
插入多个文档
db.file2.insertMany([{title:'文档1',time:'2020-01-01',author:{age:18,name:'leeamazing'}},
{title:'文档2',time:'2019-01-01',author:{age:18,name:'leeamazing'}},
{title:'文档3',time:'2018-01-01',author:{age:18,name:'leeamazing'}}])
//控制台输出结果
{
"acknowledged":true,
"insertedld":[
ObjectId("xxxxxxxxxxx"),
ObjectId("xxxxxxxxxxx"),
ObjectId("xxxxxxxxxxx")
]
}
要查询上述文档信息,可以用db.collection.find()方法,例如
db.file2.find({})
查询文档
除了db.collection.find()方法来查询文档,还有其他方式。
嵌套文档查询
db.file2.find({author:{age:18,name:'leeamazing'}})
需要注意的是整个嵌套文档需要与数据中的字段完全匹配,包括字段顺序,例如db.file2.find({author:{name:'leeamazing',age:18}})
就与集合的任何文档都不匹配。
嵌套字段查询
db.file2.find({'author.name':'leeamazing'})
使用查询运算符
db.file2.find({'author.age':{<:20}})
查询年龄小于20的,使用了小于运算符($lt)
多条件查询
db.file2.find({'author.age':{<:20},'author.name':'leeamazing'})
修改文档
修改文档有以下3种方式:
db.collection.updateOne
db.collection.updateMany
db.collection.replaceOne
修改单个文档
db.collection.updateOne()方法用来修改单个文档,其中可以使用"$set"操作符修改字段的值。
db.file1.updateOne({'author.name':'leeamazing'},{$set:{'author.name':'leelee'}})
//控制台输出结果
{'acknowledged':true,'matchedCount':1,'modifiedCount':1}
上述例子将leeamazing修改为leelee,由于是修改单个文档,所以即便leeamazing有很多个,也只会修改查询到的第一个。
修改多个文档
db.file2.updateMany({'author.name':'leeamazing'},{$set:{'author.name':'leelee'}})
//控制台输出结果
{'acknowledged':true,'matchedCount':3,'modifiedCount':3}
替换单个文档
用db.collection.replaceOne()方法可以替换除了’_id’字段外的整个文档,并且只会替换查询到的第一个。
db.file1.replaceOne({'author.name':'leelee'},{title:'文档2',time:'2019-01-01',author:{age:18,name:'leeamazing'}},})
//控制台输出结果
{'acknowledged':true,'matchedCount':1,'modifiedCount':1}
删除文档
删除文档有以下两种方式:
db.collection.deleteOne()
db.collection.deleteMany
删除单个文档
db.file2.deleteOne({'author.name':'leeamazing'})
删除多个文档
db.file2.deleteMany({'author.name':'leeamazing'})