一、插入一条数据

> db.user_info.insertOne({name: "wang",age: 26,job: "linux"})
{
	"acknowledged" : true,
	"insertedId" : ObjectId("5ef95cf6570a92f2c8786f80")
}
> 

二、插入多条数据

> db.inventory.insertMany([
... { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status:
... "A" },
... { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" },
... status: "A" },
... { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status:
... "D" },
... { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" },
... status: "D" },
... { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" },
... status: "A" } ]);
{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("5ef95d34570a92f2c8786f81"),
		ObjectId("5ef95d34570a92f2c8786f82"),
		ObjectId("5ef95d34570a92f2c8786f83"),
		ObjectId("5ef95d34570a92f2c8786f84"),
		ObjectId("5ef95d34570a92f2c8786f85")
	]
}
> 

三、查询集合数据

> db.inventory.find()
{ "_id" : ObjectId("5ef95d34570a92f2c8786f81"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f82"), "item" : "notebook", "qty" : 50, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "A" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f83"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f84"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f85"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }

四、查询一条数据

> db.inventory.findOne()
{
	"_id" : ObjectId("5ef95d34570a92f2c8786f81"),
	"item" : "journal",
	"qty" : 25,
	"size" : {
		"h" : 14,
		"w" : 21,
		"uom" : "cm"
	},
	"status" : "A"
}

按条件查询

> db.inventory.find( {status: "D"})
{ "_id" : ObjectId("5ef95d34570a92f2c8786f83"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f84"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
> 

五、多个条件查询(and)

> db.inventory.find({status: "D",item: "paper"})
{ "_id" : ObjectId("5ef95d34570a92f2c8786f83"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
> 

六、计算查询

> db.inventory.find({status: "A",qty: { $lt: 30}})
{ "_id" : ObjectId("5ef95d34570a92f2c8786f81"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
> 

七、控制查询

> db.inventory.find({status: "A"},{item:1,qty:1,_id:0})
{ "item" : "journal", "qty" : 25 }
{ "item" : "notebook", "qty" : 50 }
{ "item" : "postcard", "qty" : 45 }
> 
# 0 不限时 1 显示

八、嵌套查询

> db.inventory.find({"size.uom":"cm"})
{ "_id" : ObjectId("5ef95d34570a92f2c8786f81"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f84"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f85"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }

九、or条件查询

> db.inventory.find( { status: "A" ,$or: [ { qty: { $lt:20 } }, { "size.uom": "cm" } ] } )
{ "_id" : ObjectId("5ef95d34570a92f2c8786f81"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("5ef95d34570a92f2c8786f85"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
> 

十、and+or+正则表达式+比较运算

> db.inventory.find( { status: "A",item: /^p/, $or: [ { qty: { $lt:20 } }, { "size.uom": "cm" } ] } )
{ "_id" : ObjectId("5ef95d34570a92f2c8786f85"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
> 

十一、修改一条

> db.inventory.updateOne(
...        { item: /^p/ },
...        {
... $set: { status: "P" } }
... )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

十二、修改多条

> db.inventory.updateMany(
...        { item: /^p/ },
...        {
... $set: { status: "P" } }
... )
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 2 }
> 

十三、修改(没有就添加)

> db.inventory.updateOne(
...        { item: /^p/ },
...        {
... $set: { name: "wang" } }
... )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

十四、查看执行计划

> db.user_info.find({age:26}).explain()
{
	"queryPlanner" : {
		"plannerVersion" : 1,
		"namespace" : "test.user_info",
		"indexFilterSet" : false,
		"parsedQuery" : {
			"age" : {
				"$eq" : 26
			}
		},
		"winningPlan" : {
			"stage" : "COLLSCAN",  #全表扫描
			"filter" : {
				"age" : {
					"$eq" : 26
				}
			},
			"direction" : "forward"
		},
		"rejectedPlans" : [ ]
	},
	"serverInfo" : {
		"host" : "db1",
		"port" : 27017,
		"version" : "4.0.14",
		"gitVersion" : "1622021384533dade8b3c89ed3ecd80e1142c132"
	},
	"ok" : 1
}

十五、创建索引

> db.user_info.createIndex( {
... age: 1 },
...       {
...          background: true
... } )
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}

十六、查看索引

> db.user_info.getIndexes()
[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_",
		"ns" : "test.user_info"
	},
	{
		"v" : 2,
		"key" : {
			"age" : 1
		},
		"name" : "age_1",
		"ns" : "test.user_info",
		"background" : true
	}
]
> 

十七、查看执行计划

> db.user_info.find({age:26}).explain()
{
	"queryPlanner" : {
		"plannerVersion" : 1,
		"namespace" : "test.user_info",
		"indexFilterSet" : false,
		"parsedQuery" : {
			"age" : {
				"$eq" : 26
			}
		},
		"winningPlan" : {
			"stage" : "FETCH",
			"inputStage" : {
				"stage" : "IXSCAN",  #索引扫描
				"keyPattern" : {
					"age" : 1
				},
				"indexName" : "age_1",
				"isMultiKey" : false,
				"multiKeyPaths" : {
					"age" : [ ]
				},
				"isUnique" : false,
				"isSparse" : false,
				"isPartial" : false,
				"indexVersion" : 2,
				"direction" : "forward",
				"indexBounds" : {
					"age" : [
						"[26.0, 26.0]"
					]
				}
			}
		},
		"rejectedPlans" : [ ]
	},
	"serverInfo" : {
		"host" : "db1",
		"port" : 27017,
		"version" : "4.0.14",
		"gitVersion" : "1622021384533dade8b3c89ed3ecd80e1142c132"
	},
	"ok" : 1
}

十八、删除索引

> db.user_info.dropIndex("age_1")
{ "nIndexesWas" : 2, "ok" : 1 }

十九、其他索引类型

COLLSCAN – Collection scan
IXSCAN – Scan of data in index keys
FETCH – Retrieving documents
SHARD_MERGE – Merging results from shards
SORT – Explicit sort rather than using index orde

二十、删除单条数据

> db.inventory.deleteOne({status:"P"})
{ "acknowledged" : true, "deletedCount" : 1 }

二十一、删除多条数据

> db.inventory.deleteMany({status:"P"})
{ "acknowledged" : true, "deletedCount" : 2 }

二十二、删除索引

> db.user_info.dropIndex("age_1")
{ "nIndexesWas" : 2, "ok" : 1 }

二十三、删除集合

> db.user_info.drop()
true

二十四、删除库

> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }

Categories: 数据库

0 Comments

发表评论

Avatar placeholder

邮箱地址不会被公开。 必填项已用*标注