- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 bulkWrite
中有 insertOne
和 updateOne
如下:
async function bulkWrite(users) {
await users.bulkWrite([
{
insertOne: {
document: {
name: 'bulk-insert1',
age: 100
}
},
updateOne: {
filter: {
name: 'mongodb'
},
update: {
$set: {
age: 200
}
}
}
}
])
}
我预计它会插入一个新文档并更新一个现有文档,但结果不同。
我的主要功能:
const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://localhost:27017/";
const DB_NAME = 'javascript-mongodb-bulkwrite-demo';
const COLLECTION_NAME = 'users';
async function run() {
const mongo = await MongoClient.connect(url, {useNewUrlParser: true});
const db = mongo.db(DB_NAME);
await clearDb(db);
const users = await db.createCollection(COLLECTION_NAME);
await createUsers(users);
await printUsers(users);
await bulkWrite(users);
await printUsers(users);
await mongo.close()
}
run();
它使用的其他功能:
async function clearDb(db) {
console.log('------- clearDb --------');
const collections = await db.collections();
await Promise.all(collections.map(async it => {
await it.drop();
}));
}
async function createUsers(users) {
console.log('------- createUsers --------');
users.insertMany([
{
name: 'javascript',
age: 10
}, {
name: 'mongodb',
age: 20
}
])
}
async function printUsers(users) {
console.log('------- printUsers --------');
await users.find().forEach(user => {
console.log(user);
})
}
bulkWrite
函数:
async function bulkWrite(users) {
console.log('------- bulkWrite --------');
return await users.bulkWrite([
{
insertOne: {
document: {
name: 'bulk-insert1',
age: 100
}
},
updateOne: {
filter: {
name: 'mongodb'
},
update: {
$set: {
age: 200
}
}
}
}
])
}
当前结果如下:
------- clearDb --------
------- createUsers --------
------- printUsers --------
{ _id: 5c10b6011dd87efa7feb5b47, name: 'javascript', age: 10 }
{ _id: 5c10b6011dd87efa7feb5b48, name: 'mongodb', age: 20 }
------- bulkWrite --------
------- printUsers --------
{ _id: 5c10b6011dd87efa7feb5b47 }
{ _id: 5c10b6011dd87efa7feb5b48, name: 'mongodb', age: 20 }
我希望最后一部分是:
{ _id: 5c10b6011dd87efa7feb5b47, name: 'javascript', age: 10 }
{ _id: 5c10b6011dd87efa7feb5b48, name: 'mongodb', age: 20 }
{ _id: 5c10b6011dd87efa7feb5b49, name: 'bulk-insert1', age: 100 }
我还为此创建了一个演示项目,您可以克隆并运行它:
https://github.com/freewind-demos/javascript-mongodb-bulkwrite-demo
(我将当前代码锁定到issue
分支)
最佳答案
这只是一个错字。您错过了批量操作之间的一对大括号。
应该是:
const res = await users.bulkWrite([
{
insertOne: {
document: {
name: 'bulk-insert1',
age: 100
}
}
}, {
updateOne: {
filter: {
name: 'mongodb'
},
update: {
$set: {
age: 200
}
}
}
}
]);
关于javascript - `bulkWrite` 和 `insertOne/updateOne` 在 mongodb 中不能像我预期的那样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738254/
我正在使用 Go 的官方 mongodb 驱动程序。我获取一个 CSV 并逐行读取它,直到达到 1000 行,然后我解析数据并将其插入到数据库中。我假设它需要一个恒定的内存,因为批量写入的数据总是相同
我正在尝试在 MongoCollection 中插入/更新许多记录。我有一份需要更新的文档列表。 List Documents; 该列表包含一些要插入的新记录以及其他需要更新的现有记录。我正在研究方法
我一直在尝试在 Mongoose 中执行 Bulkwrite 查询,但我不知道由于什么原因它没有抛出错误 let input = [ { "variantId": "5e176
出于某种原因,我找不到有关如何在 for 循环中设置 await 的相关文章。我的想法是,我想在每 500 个条目中分块 bulkWrite。 for 循环外的 await 工作正常,但是在 for
对于我的测试套件,我想在数据库中批量写入测试信息,然后批量删除在整个测试过程中输入的任何测试信息以恢复到干净状态。为此,我在数据库上运行 bulkWrite,我将通过 nodeJS 的 require
AFAIK,这两个操作都可以更新多个文档。如果是这样,两者之间有什么区别? 最佳答案 只是引用 API docs这里 bulkWrite Sends multiple insertOne, updat
上下文: 我正在尝试批量插入数据数组,并附加一个计算字段:“状态”。 状态应该是: - “New”表示新插入的文档; - 对于数据库中存在但传入数据集中不存在的文档,“已删除”; - 解释字段价格演变
下面的脚本在 mongo bulkWrite op 语法中有一个错误:$setOnInsert: { count:0 }, 是不必要的,因此 mongo 抛出一个异常:“无法更新'count'和'co
我在 bulkWrite 中有 insertOne 和 updateOne 如下: async function bulkWrite(users) { await users.bulkWrite(
我正在尝试批量写入一些更新,除了 upsert 之外的所有内容都在工作。 我的代码正在完美地更新所有项目,并且从未出现过任何错误。 这里的问题是使用 updateOne 的批量插入没有更新。 (这是我
我正在从 mgo 驱动程序迁移,我的函数如下所示: queue := collection.Bulk() for j := range changes { .. queue.Updat
我正在为 Ionic 前端开发 LoopBack 后端。它使用 MongoDB 作为数据库。 在 package.json 中,我尝试将依赖项 loopback-connector-mongodb 从
我有这两个子文档,它们的结构基本相同。每个文档都包含一个名为 scheduleInfo 的对象数组。该数组的结构如下。 设备列表 scheduleInfo: [{month: String, hour
我是一名优秀的程序员,十分优秀!