Skip to content

MongoDB 增删改查基本操作

L edited this page Jun 7, 2019 · 4 revisions

可以使用Navicat/powershell来操作

Insert

insertMany()

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" ] }
]);

insertOne()

db.inventory.insertOne(
   { item: "book", qty: 25, status: "C",
       size: { h: 16, w: 20, uom: "cm" }, tags: [ "blank", "red" ] }
);

Query

find()

# 查询全部
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" } )   

Update

在MongoDB中,更新操作以单个集合为目标。 MongoDB中的所有写入操作都是单个文档级别的原子操作
可以指定标识要更新的文档的条件或过滤器。 这些过滤器使用与读取操作相同的语法
2

updateOne()

更新第一个符合条件的记录

db.inventory.updateOne(
   { item: "paper" },
   {
     $set: { "size.uom": "cm", status: "P" },
     $currentDate: { lastModified: true }
   }
)

使用$ set运算符将size.uom字段的值更新为“cm”,将状态字段的值更新为“P”,
使用$ currentDate运算符将lastModified字段的值更新为当前日期。 如果lastModified字段不存在,$ currentDate将创建该字段。

updateMany()

更新qty小于50的所有文档

db.inventory.updateMany(
   { "qty": { $lt: 50 } },
   {
     $set: { "size.uom": "in", status: "P" },
     $currentDate: { lastModified: true }
   }
)

replaceOne()

要替换除_id字段之外的文档的整个内容,将全新文档作为db.collection.replaceOne()的第二个参数传递

db.inventory.replaceOne(
   { item: "paper" },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)

得到结果如下
1

Delete

deleteMany()

# 删除所有
db.inventory.deleteMany({})
# 删除所有status="A"的文档
db.inventory.deleteMany({ status : "A" })

deleteOne()

# 删除status="D"的第一个文档
db.inventory.deleteOne( { status: "D" } )

更多资料

crud
SQL to MongoDB Mapping Chart

Clone this wiki locally