-
Notifications
You must be signed in to change notification settings - Fork 22
MongoDB 增删改查基本操作
L edited this page Jun 7, 2019
·
4 revisions
可以使用Navicat/powershell来操作
db.inventory.insertMany([
// MongoDB adds the _id field with an ObjectId if _id is not present
{ item: "journal", qty: 25, status: "A",
size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },
{ item: "notebook", qty: 50, status: "A",
size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
{ item: "paper", qty: 100, status: "D",
size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },
{ item: "planner", qty: 75, status: "D",
size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
{ item: "postcard", qty: 45, status: "A",
size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
]);
db.inventory.insertOne(
{ item: "book", qty: 25, status: "C",
size: { h: 16, w: 20, uom: "cm" }, tags: [ "blank", "red" ] }
);
# 查询全部
db.inventory.find( {} )
# 查询status="D"的
db.inventory.find( { status: "D" } )
# 查询同时符合下面三种条件的(匹配嵌入式文档)
db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
# 匹配嵌入文档中的字段
db.inventory.find( { "size.uom": "in" } )
# 匹配数组中的元素:只有tags中有"red"即可
db.inventory.find( { tags: "red" } )
# 完全匹配数组:"red"有且仅有"red", "blank"
db.inventory.find( { tags: ["red", "blank"] } )
# 拥有任一
db.inventory.find( { tags: "red" || "plain" } )
在MongoDB中,更新操作以单个集合为目标。 MongoDB中的所有写入操作都是单个文档级别的原子操作
可以指定标识要更新的文档的条件或过滤器。 这些过滤器使用与读取操作相同的语法
更新第一个符合条件的记录
db.inventory.updateOne(
{ item: "paper" },
{
$set: { "size.uom": "cm", status: "P" },
$currentDate: { lastModified: true }
}
)
使用$ set运算符将size.uom字段的值更新为“cm”,将状态字段的值更新为“P”,
使用$ currentDate运算符将lastModified字段的值更新为当前日期。 如果lastModified字段不存在,$ currentDate将创建该字段。
更新qty小于50的所有文档
db.inventory.updateMany(
{ "qty": { $lt: 50 } },
{
$set: { "size.uom": "in", status: "P" },
$currentDate: { lastModified: true }
}
)
要替换除_id字段之外的文档的整个内容,将全新文档作为db.collection.replaceOne()的第二个参数传递
db.inventory.replaceOne(
{ item: "paper" },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)
得到结果如下
# 删除所有
db.inventory.deleteMany({})
# 删除所有status="A"的文档
db.inventory.deleteMany({ status : "A" })
# 删除status="D"的第一个文档
db.inventory.deleteOne( { status: "D" } )