问题标签 [mongodb.driver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Mongo DB BSON:无法确定接口的序列化信息(C#)
我是 mongo DB 的新手,并且拥有实现相同接口的不同类的对象。我将这些对象存储在工作正常的 mongo DB 中。问题是这个对象的反序列化。
这是我的界面和类:
对于过滤,我需要检查 e.Event.Account。这里出现错误
无法确定 e => e.Event.Account 的序列化信息
似乎 e.Event 的反序列化不起作用:
如果我添加注释
以上
序列化有效,但我必须选择类(例如 BaseEvent)。这必须自动工作。
c# - C# MongoDB 序列化转换属性“ReadBsonType 只能在 State 为 Type 时调用,不能在 State 为 Value 时调用。”
我有一个要反序列化的模型,问题是在其中一个属性上,它有时是字符串,有时是文档。所以我决定编写一个从 SerializerBase 构建的自定义序列化程序。但是,似乎框架中可能存在错误。在重写 Deserialize 方法时,我总是得到异常“ReadBsonType 只能在 State 为 Type 时调用,而不能在 State 为 Value 时调用。”
我正在使用 .Net 框架 4.6.2,我的 mongo 库的所有版本都是 2.8.0
这是我的课程的简化版本以及我如何实现它。
这是我试图反序列化的模型:
这似乎是一个非常开箱即用的解决方案,任何人都可以看到我可能做错了什么吗?另外因为我正在尝试编写一个可以处理类型转换的自定义序列化程序,是否有更合适的方法来实现这一点?
谢谢!
编辑:下面是我得到的堆栈跟踪:
在 MongoDB.Bson.Serialization.BsonClassMapSerializer
1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap) at MongoDB.Bson.Serialization.BsonClassMapSerializer
1.DeserializeClass(BsonDeserializationContext 上下文) 在 MongoDB.Bson.Serialization.BsonClassMapSerializer1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer
1 序列化程序,BsonDeserializationContext 上下文) 在 MongoDB.Driver.Core.Operations.CursorBatchDeserializationHelper.DeserializeBatch[TDocument](RawBsonArray 批处理,IBsonSerializer` 1个文档序列化器,
c# - 如何使用 MongoDb C# 驱动程序按 id 加入集合
我正在尝试加入两个集合Id
。虽然我可以看到数据库中的行,但查询结果是空的。
我有两个系列:userGames
和games
这是我加入收藏的代码:
第一部分返回 13 个元素,但第二部分不返回任何内容。我觉得线路userGame.GameId equals game.Id
有问题。尝试ObjectId.Parse()
在两者上使用userGame.GameId
,game.Id
但没有运气。
这是我的模型
游戏类:
用户游戏:
c# - .net 4.6.1 上的超时异常,但在 .net core 2.0 上没有,同时使用 MongoDB.Driver 连接到 mongodb
在具有 .net 框架 4.6.1 的 Visual Studio 2017 上的项目中使用 MongoDB.Driver (v2.9.1) 时,对集合运行聚合命令超时,但出现以下异常:
注意servername 对应运行 mongo 的服务器的实际 DNS 名称
使用相同的参数和完全相同的代码以及来自 nuget 的 MongoDB.Driver 版本,.net core 2.0 上不会发生超时
我在网上尝试了尝试不同连接模式(即replicaSet、直接、独立等)的建议,但在4.6.1上都没有,在.net core上都可以
我还启用了网络跟踪并在下面添加了一个片段
注意server-ip-address、serverdns name和my-ip-address都是占位符
请参阅下面的代码进行复制
我还通过 mongo 服务器 URL 实例化了 MongoClient,但我注意到来自 .net 4.6.1 和 .net core 2.0 的调用之间的一些客户端设置不同,因此我使用 MongoClientSettings 确保设置一致
当我从同一台机器上的 .net 核心程序尝试它时,我看到侦听器接受了来自我的 IP 地址的连接和元数据,见下文
使用 .net 4.6.1 代码,它接受了连接,但没有向我显示服务器端的元数据。
因此,这似乎不是身份验证问题、ip 地址/dns 问题或其他网络连接问题,或者配置错误的 mongodb 服务器
mongodbdriver 似乎没有正确连接到服务器,但我对这里可能出现的问题感到困惑。为什么 .net framework 4.6.1 和 .net core 2.0 之间的行为会有所不同?
关于如何进行的任何建议?我不想为 .net 核心重建我的整个项目,因为它做了很多其他事情,这两个框架之间存在已知的兼容性问题。帮助将不胜感激!
c# - 如何使用带有证书文件的 MongoDB.Driver 通过 TLS 连接到服务器?
根据 MongoDB 文档,应该可以通过 TLS 连接,您可以在其中通过tlsCAFile
参数指定 pem 证书。
但是,我无法以成功的方式使用客户端。
[将证书安装到本地存储不是一种选择]
无论我做了什么,客户提供的所有错误都是通用的A timeout occured after 30000ms...
+ 。The remote certificate is invalid according to the validation procedure
我已经通过向 MongoDB 管理工具明确提供证书来验证服务器是否可以访问。
c# - 为什么 MongoDB.Driver Indexes.CreateOne 无法创建索引并出现错误“命令 createIndexes failed”?
通过代码创建新集合时,添加新索引的调用失败:
c# - C# 中的多个 MongoDb 过滤器
为了在 C# 中处理多个 MongoDb 过滤器,我编写了以下方法;
但它会抛出错误:
c# - C# MongoDb - 如何更新嵌套文档中的一个字段?
我想要实现的是为该方法提供List<JobList>
包含作业的客户端 ID 和 InternalIds 。Finish()
然后我想遍历客户端并更新所有与 JobInternalIds 匹配的作业并将当前日期时间设置为 FinishedAt 字段。问题是我完全不知道如何更新嵌套对象。
我尝试过类似下面的方法,但没有成功。
c# - MongoDB C# 驱动程序 - 使用未加入数组的查找(聚合)
我正在尝试通过使用查找(聚合)的 ID 加入两个集合。两个班:
查询:
文件:
我不知道为什么这不起作用。连接不会发生,因为ac.MyClients没有元素,即使ac.BestClientsIds数组有。据我了解,$lookup 支持数组。我真的很感激一些帮助。谢谢。(MongoDB v4.2.3,.Net Driver v2.10.1,数据类型不可修改)。
c# - MongoDB C# 驱动程序 - 如何在 .NET 中对连接的集合强制执行投影?
这是代码:
我可以使用第一个投影"projDefAccountant"
来限制我想要从"accountants"
集合中删除哪些字段。有没有办法"projDefClient"
在连接集合上强制执行投影,"clients"
以便连接不返回所有字段,而只返回"projDefClient"
? 谢谢。