c# - 如何在 MongoDB C# 中检索更新文档的所有 _id?
问题描述
我想使用 bulkWrite() 运行多个 upsert 查询。但问题是,bulkWrite 只返回插入的_ids 而不是更新的_ids。如何获取此查询中的所有 _id?
var insertCommand = Builders<myObject>.Update.SetOnInsert(d => d.Name, object.Name).SetOnInsert(d => d.Age, object.Age);
var updateCommand = Builders<myObject>.Update.Set(d => d.LastRequest, object.DateTime);
var updateQueries = Builders<myObject>.Update.Combine(new[] { updateCommand, insertCommand });
var filter = Builders<myObject>.Filter;
var findQuery = filter.And(filter.Eq(e => e.Name, object.Name), filter.Eq(e => e.City, object.City));
var upsertObject = new UpdateOneModel<myObject>(findQuery, updateQueries) { IsUpsert = true };
bulkOps.Add(upsertObject);
var result = await Collection.BulkWriteAsync(bulkOps);
解决方案
使用BulkWriteAsync
,我不认为这是可以做到的。MongoDB操作的文档bulkWrite
说明如下:
回报:
如果操作以写入关注运行,则布尔值确认为 true,如果写入关注被禁用,则确认为 false。
每个写操作的计数。
一个数组,其中包含每个成功插入或更新插入的文档的 _id。
但是,对于单个实例有效的是:
var result = collection.FindOneAndUpdate(findQuery, updateQueries, new FindOneAndUpdateOptions<myObject> { IsUpsert = true, ReturnDocument = ReturnDocument.After});
运行此之后,result
将保存修改后的文档,包括其_id
.
推荐阅读
- swift - Swift:ScrollView 仅显示添加的最后一个视图
- javascript - JavaScript 将“\”添加到 CSS 类
- javascript - 从 Jenkins 运行 Postman 测试时出现错误 401“上下文创建失败:错误:未经授权:”。为什么?
- sql - SQL - 组中的 Max() 值不起作用
- javascript - 在特定高度时出现滚动顶部按钮
- javascript - 如果特定产品在购物车中,Woocommerce 将特定产品添加到购物车
- ibm-cloud - AppID userProfileManager.getUserInfo() 给出 UnauthorizedException 错误
- jsonschema - jsonschema 中是否有任何机制可以为数组定义自定义验证器?
- openmp - slurm 使用脚本在单个节点上运行多个 openMP 作业
- php - React + Laravel 7 API - CORS 问题