MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.<collection>.insert()
向集合中插入一个或多个文档
当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id该属性用来作为文档的唯一标识
_id我们可以自己指定,如果我们指定了数据库就不会在添加了,如果自己指定_id 也必须确保它的唯一性
db.COLLECTION_NAME.insert(document)
或
db.COLLECTION_NAME.save(document)3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany()。
db.collection.insertOne() 用于向集合插入一个新文档,语法格式如下:
db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)db.collection.insertMany() 用于向集合插入一个多个文档,语法格式如下:
db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)参数说明:
document:要写入的文档。
writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
ordered:指定是否按顺序写入,默认 true,按顺序写入。
show dbs
admin 180.00 KiB
city 72.00 KiB
icmpy 344.00 KiB
config 96.00 KiBuse icmpy
向icmpy数据库的skd集合插入文档:
db.skd.insert({
name:"hyq",
age:19,
gender:"男",
hobby:["football","music","game"],
major:"计算机应用"
}){
"acknowledged" : true,
"insertedIds" : {
"0" : "668f52f4301d1375d03a07f0"
}
}//插入多个文档
db.skd.insert([
{
name:"wfq",
age:21,
gender:"男",
hobby:["football","running","history"],
major:"历史"
},
{
name:"shc",
age:18,
gender:"女",
hobby:["running","music","drawing"],
major:"医学"
},
{
name:"sq",
age:20,
gender:"女",
hobby:["running","music","dancing"],
major:"计算机信息管理"
},
]){
"acknowledged" : true,
"insertedIds" : {
"0" : "668f528f301d1375d03a07ed",
"1" : "668f528f301d1375d03a07ee",
"2" : "668f528f301d1375d03a07ef"
}
}//查询文档
db.collection.find(query, projection)
find()用来查询集合中所有符合条件的文档
find()可以接收一个对象作为条件参数
{} 表示查询集合中所有的文档
{属性:值} 查询属性是指定值的文档
find()返回的是一个数组
- query :可选,使用查询操作符指定查询条件 
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。 
 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:- *等于* - *{ - : *}*- * - *db.stus.find({“name”:”shc”}).pretty()* - *where name = ‘shc’* - 小于 - { - :{$lt: - }} - db.stus.find({“age”:{$lt:20}}).pretty() - where age <20 - 小于或等于 - { - :{$lte: - }} - db.stus.find({“age”:{$lte:30}}).pretty() - where age <= 30 - 大于 - { - :{$gt: - }} - db.stus.find({“age”:{$gt:30}}).pretty() - where age > 30 - 大于或等于 - { - :{$gte: - }} - db.stus.find({“age”:{$gte:30}}).pretty() - where age >= 30 - 不等于 - { - :{$ne: - }} - db.stus.find({“age”:{$ne:30}}).pretty() - where age != 30 - 操作 - 格式 - 范例 - RDBMS中的类似语句 
比如:
//查询名字是”sq”的文档:
db.skd.find({name:"sq"}){
"_id" : "668f528f301d1375d03a07ef",
"name" : "sq",
"age" : 20,
"gender" : "女",
"hobby" : [
"running",
"music",
"dancing"
],
"major" : "计算机信息管理"
}//查询年龄>20的文档:
db.skd.find({age:{$gt:20}}){
"_id" : "668f528f301d1375d03a07ed",
"name" : "wfq",
"age" : 21,
"gender" : "男",
"hobby" : [
"football",
"running",
"history"
],
"major" : "历史"
}//查询年龄<=18的文档
db.skd.find({age:{$lte:18}}){
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"gender" : "女",
"hobby" : [
"running",
"music",
"drawing"
],
"major" : "医学"
}//查询年龄不等于19的文档:
db.skd.find({age:{$ne:19}}){
"_id" : "668f528f301d1375d03a07ed",
"name" : "wfq",
"age" : 21,
"gender" : "男",
"hobby" : [
"football",
"running",
"history"
],
"major" : "历史"
}
{
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"gender" : "女",
"hobby" : [
"running",
"music",
"drawing"
],
"major" : "医学"
}
{
"_id" : "668f528f301d1375d03a07ef",
"name" : "sq",
"age" : 20,
"gender" : "女",
"hobby" : [
"running",
"music",
"dancing"
],
"major" : "计算机信息管理"
}
{
"_id" : "668f52f4301d1375d03a07f0",
"name" : "sjk",
"age" : 20,
"gender" : "男",
"hobby" : [
"football",
"riding",
"running"
],
"major" : "计算机应用"
}//查询19<年龄<21的文档
db.skd.find({age:{$lt:21,$gt:19}}){
"_id" : "668f528f301d1375d03a07ef",
"name" : "sq",
"age" : 20,
"gender" : "女",
"hobby" : [
"running",
"music",
"dancing"
],
"major" : "计算机信息管理"
}
{
"_id" : "668f52f4301d1375d03a07f0",
"name" : "sjk",
"age" : 20,
"gender" : "男",
"hobby" : [
"football",
"riding",
"running"
],
"major" : "计算机应用"
}And:MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。语法格式如下:
db.col.find({key1:value1, key2:value2}).pretty()db.skd.find({“major”:”计算机应用”,”age”:{$gt:18}}).pretty()
{
"_id" : "668f50b5301d1375d03a07ec",
"name" : "hyq",
"age" : 19,
"gender" : "男",
"hobby" : [
"football",
"music",
"game"
],
"major" : "计算机应用"
}
{
"_id" : "668f52f4301d1375d03a07f0",
"name" : "sjk",
"age" : 20,
"gender" : "男",
"hobby" : [
"football",
"riding",
"running"
],
"major" : "计算机应用"
}Or:语法格式如下:
db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()查询年龄>20或者major“医学”的文档
db.skd.find(
{
$or:[{age:{$gt:20}},{"major":"医学"}]
}
).pretty(){
"_id" : "668f528f301d1375d03a07ed",
"name" : "wfq",
"age" : 21,
"gender" : "男",
"hobby" : [
"football",
"running",
"history"
],
"major" : "历史"
}
{
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"gender" : "女",
"hobby" : [
"running",
"music",
"drawing"
],
"major" : "医学"
}// and & or联合使用
db.skd.find(
{
"age":{$lte:20},
$or:[
{"major":"计算机信息管理"},
{"hobby":"music"}
] 
}).pretty(){
"_id" : "668f50b5301d1375d03a07ec",
"name" : "hyq",
"age" : 19,
"gender" : "男",
"hobby" : [
"football",
"music",
"game"
],
"major" : "计算机应用"
}
{
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"gender" : "女",
"hobby" : [
"running",
"music",
"drawing"
],
"major" : "医学"
}
{
"_id" : "668f528f301d1375d03a07ef",
"name" : "sq",
"age" : 20,
"gender" : "女",
"hobby" : [
"running",
"music",
"dancing"
],
"major" : "计算机信息管理"
}db.skd.find(
{
"age":{$lte:19},
$or:[
{"major":"计算机信息管理"},
{"hobby":"music"}
] 
}).pretty(){
"_id" : "668f50b5301d1375d03a07ec",
"name" : "hyq",
"age" : 19,
"gender" : "男",
"hobby" : [
"football",
"music",
"game"
],
"major" : "计算机应用"
}
{
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"gender" : "女",
"hobby" : [
"running",
"music",
"drawing"
],
"major" : "医学"
}db.skd.find(
{
"age":{$lte:18},
$or:[
{"major":"计算机信息管理"},
{"hobby":"music"}
] 
}).pretty(){
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"gender" : "女",
"hobby" : [
"running",
"music",
"drawing"
],
"major" : "医学"
}//查询总量count
db.skd.find().count()
5Limit() 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。limit()方法基本语法如下所示:
db.COLLECTION_NAME.find().limit(NUMBER)以下实例为显示查询文档中的两条记录:
//limit()
db.skd.find().limit(2){
"_id" : "668f50b5301d1375d03a07ec",
"name" : "hyq",
"age" : 19,
"gender" : "男",
"hobby" : [
"football",
"music",
"game"
],
"major" : "计算机应用"
}
{
"_id" : "668f528f301d1375d03a07ed",
"name" : "wfq",
"age" : 21,
"gender" : "男",
"hobby" : [
"football",
"running",
"history"
],
"major" : "历史"
}Skip()我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。skip() 方法脚本语法格式如下:
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
db.col.find().limit(1).skip(1)
 分页 每页显示10条
	1-10     0
	11-20    10
	21-30    20
	...
skip((页码-1) * 每页显示的条数).limit(每页显示的条数);
	skip()用于跳过指定数量的数据    
 	MongoDB会自动调整skip和limit的位置//显示第二条文档数据
db.skd.find().limit(1).skip(1)  {
"_id" : "668f528f301d1375d03a07ed",
"name" : "wfq",
"age" : 21,
"gender" : "男",
"hobby" : [
"football",
"running",
"history"
],
"major" : "历史"
}sort() 方法 在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。sort()方法基本语法如下所示:
db.COLLECTION_NAME.find().sort({KEY:1})以下实例演示了 stus 集合中的数据按字段 age 的降序排列:
//sort()
```shell
db.skd.find().sort({age:1}){
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"gender" : "女",
"hobby" : [
"running",
"music",
"drawing"
],
"major" : "医学"
}
{
"_id" : "668f50b5301d1375d03a07ec",
"name" : "hyq",
"age" : 19,
"gender" : "男",
"hobby" : [
"football",
"music",
"game"
],
"major" : "计算机应用"
}
...投影:在查询时,可以在第二个参数的位置来设置查询结果的投影:
对于想显示的字段,可以设置为1,_id默认必显示,我们可以设置为0隐藏
db.emp.find({},{ename:1 , _id:0 , sal:1});db.skd.find({},{"name":1,"major":1}){
"_id" : "668f50b5301d1375d03a07ec",
"name" : "hyq",
"major" : "计算机应用"
}
{
"_id" : "668f528f301d1375d03a07ed",
"name" : "wfq",
"major" : "历史"
}
{
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"major" : "医学"
}
{
"_id" : "668f528f301d1375d03a07ef",
"name" : "sq",
"major" : "计算机信息管理"
}
{
"_id" : "668f52f4301d1375d03a07f0",
"name" : "sjk",
"major" : "计算机应用"
}db.skd.find({},{"name":1,age:1,"major":1}){
"_id" : "668f50b5301d1375d03a07ec",
"name" : "hyq",
"age" : 19,
"major" : "计算机应用"
}
{
"_id" : "668f528f301d1375d03a07ed",
"name" : "wfq",
"age" : 21,
"major" : "历史"
}
{
"_id" : "668f528f301d1375d03a07ee",
"name" : "shc",
"age" : 18,
"major" : "医学"
}
{
"_id" : "668f528f301d1375d03a07ef",
"name" : "sq",
"age" : 20,
"major" : "计算机信息管理"
}
{
"_id" : "668f52f4301d1375d03a07f0",
"name" : "sjk",
"age" : 20,
"major" : "计算机应用"
} 
 