- 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/
我正在尝试更新现有的 Mongo 记录,但收到“附加信息:元素名称‘ID’无效’。”错误 我有一个 BsonDocument“文档”,其中包含我从另一个来源检索的数据,如下所示: { "ID" : "
好吧,所以我整晚都在修补这个,我必须 sleep 所以我在这里问。为什么 updateOne 在应该更新数据时却删除了我的数据? DB.collection('users').updateOne({"
This post也有我的问题,但没有人回答。我在 mongodb 中有一个模型,其中有一些字段,其中一个名为 synced ,这是一个 bool 字段。使用下面的代码,我想更新一个(或多个小改动)文
我编写了以下程序,通过删除最低成绩来更新一组记录。根据程序的输出,UpdateResult.matchedCount=1,但UpdateResult.ModifiedCount=0。本质上,查询是查找
我有一个 MongoDAO 类,它具有以下用于基本 Mongo CRUD 操作的代码。我使用 collection.updateOne 方法的代码行未编译并抛出错误“MongoCollection 类
看下面的例子 我只想更新 ExpensesHouse 中的一条记录,因此我构建了以下代码 router.post("/editExpense/:id", ensureAuthenticated, (r
是否可以使用 OrmLite 扩展方法 仅更新 一次更新多个字段? 文档中给出的示例是: db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.F
运行此查询时: const project = await models.Projects .updateOne( { _id: projectId }, {
在我的 good'ol grails (3.1.x) 应用程序中,我有类似的行 ModuleState.collection.updateOne( [ compositeKey:ck ],
我有一个对象 User,其属性为 LastLoggedIn,以下是我为更新此字段而编写的代码: using (var o = Conn.OpenDbConnection()) { var on
是否可以获取所有更新的值/调用 updateOne() 后存在差异的值 _.each(gameResult, function(gameResult){ bulk.find({"user"
很抱歉问了这个非常基本的问题,但我真的希望这段代码能够工作。 在node.js中,我使用.updateOne()函数成功更新了我的mongo数据库,并将参数保留为空白,如下所示。我认为它会更新集合中最
我的 Angular 应用程序使用在服务器端执行的复杂验证。出于这个原因,我配置了仅在 blur 事件上触发更新和验证: this.form = new FormGroup( { ... },
我正在尝试从 go 更新 MongoDB 的文档。 ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) d
我有以下 reducer : case ProductionCommentActionTypes.EditCommentSuccess: { return adapter.updateOne(ac
我有一个响应式表单组,它与 updateOn submit 和 updateOn change 配合得很好。 但是当我切换到 updateOn blur 时,在我的自定义表单控件中输入字符后会直接触发
我正在尝试使用“updateOne”方法删除数组项,但我的查询与我拥有的模型结构中的正确记录不匹配。给定一封电子邮件,我想找到包含所提供电子邮件的数组项并将其拉出,将其删除。 (不存在具有相同电子邮件
我想知道它是否更快(导入)使用 updateone或 updatemany使用批量写入。我使用 pymongo 外观将数据导入集合的代码是这样的: for file in sorted_files:
我有一个自定义的异步验证器,我想设置 updateOn: 'blur'属性使用 FormBuilder : myForm = this.formBuilder.group({ email: ['
有什么方法可以在使用 ngModelOptions 时触发验证吗?我的用例是有一个表单,其中所有字段在提交时更新 ngModel(因为我想在用户单击“取消”按钮时恢复整个表单)。有了这个,我无法立即验
我是一名优秀的程序员,十分优秀!