一、插入一条数据
> 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 }
0 Comments