批量插入
> db.user.insertMany([{username: "一号", password: "二号"},{username: "一号m", password: "二号m"}]);
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5d677bf6266a6c3bde961c92"),
ObjectId("5d677bf6266a6c3bde961c93")
]
}
批量删除
为什么要用批量删除?
因为只使用deleteOne或者pull,drop等,只会删除匹配到的第一个文档
> db.user.deleteMany({username: "1"})
{ "acknowledged" : true, "deletedCount" : 2 }
批量更新
为什么要用批量更新?
因为只是用update,updateOne,findOneAndUpdate都只会修改匹配到的第一个文档,除非你指定multi为true
> db.team_roles.updateMany(
{team:
{
$in:
[
ObjectId("5cb6cf1cb6d7ff7c270787b5"),
ObjectId("5d1c6b3589a4db1378127769"),
ObjectId("5b36e9cef2ca8030eca62359")
]
},
"privileges.crm.value":{$exists: true}},
{$set: {"privileges.crm.value": "00"}},
{upsert: false,/*multi: true*/});
{
"acknowledged" : true,
"matchedCount" : 15,
"modifiedCount" : 15
}
$exists:判断该值是否存在
upsert:如果该值不存在,是否自动插入?
multi:是否更新匹配到的所有文档?默认为false,只修改第一条匹配的文档,但在updateMany中不需要,因为它已经是批量修改了
批量查询
db.team_roles.find(
{
team:
{
$in:
[
ObjectId("5cb6cf1cb6d7ff7c270787b5"),
ObjectId("5d1c6b3589a4db1378127769"),
ObjectId("5b36e9cef2ca8030eca62359")
]
},
$or:[
{
"privileges.crm.value"://数值长度不符合规则的
{
$exists: true,
$regex: /^.{0,13}$/
}
},
]
},
{"privileges.crm.value":1, _id: 0});
$regex:判断该字符串值长度是否符合预期