mongodb c#驱动程序投影$ lemmatch $
我正在尝试将此查询从基于文本的过滤器转换为基于表达式的. 查询部分还可以,但是我在投影"state.transfer.attempts.$": 1方面遇到麻烦. 项目$的表达式等效是什么? 预先感谢 db.Items.find({ "state.transfer.attempts": { "$elemMatch": { "entityId": 1, "state" : "failed" } } }, { "state.transfer.attempts.$": 1 }) 解决方案 根据此博客文章,通过解决-1th - element: 来实现位置操作员 Builders.Projection.Include(state => state.transfer.attempts[-1]) 或 Builders.Projection.Include(
0 2024-04-16
编程技术问答社区
使用C#更新mongodb中的嵌入式文档
假设您有下一堂课.它包含代理工作的系统 public class AgentHistory { public ObjectId Id { get; set; } public Guid SystemId { get; set; } public Guid CampaignId { get; set; } public List Agents { get; set; } } 现在,当我得到一个新代理时,我会做下一件事: public override AgentHistory Save(AgentHistory agent) { if (agent == null) throw new ArgumentNullException("agent"); if (_repository.Exists(agent)) { Agent
0 2024-04-16
编程技术问答社区
在LINQ lambda表达式中使用字符串变量
我有一个类属性名称为字符串变量,并希望在LINQ查询中使用它.以下示例: public class Demo { public string prop1 {get; set;} public string prop2 {get; set;} public string prop3 {get; set;} } 我可以做这个 var data = db.Single(d => d.prop1 == "value"); ,但不知道运行时的属性是什么,并获得该字符串参数,例如 string propname = "prop2"; 是否有可能在lambda表达式d => d.propname == "value"中使用它?我不确定是否可以,而且逻辑上似乎不可能.因此,考虑了发布问题,看看是否有办法.请建议. 请注意,Single()呼叫正在通过MongoDB C# Driver进行,因此不确定反射是否有效. 解决方案 (这是
0 2024-04-16
编程技术问答社区
处理MongoDB在使用服务定位模式时如何存储DateTime的问题
我和我的同事正在辩论中陷入僵局,而他人的意见将不胜感激. 我们利用服务定位器模式和通用接口来抽象所有数据访问,因此随着需求的变化,我们可以轻松地在不同的数据源之间交换.我们的呼叫代码没有迹象表明数据存储的位置或如何存储.它只需通过服务注册表提供的服务访问数据. 当我们在对象上有DateTime字段并将其存储到MongoDB数据源时,我们正在辩论的问题. 我注意到的是,当我们在c#中使用DateTime中有一个对象时,它看起来是正确的时间.当我们使用Mongovue登录MongoDB服务器以检查对象,它显示了正确的时间.但是,当我们检索对象时,日期时间现在位于UTC中.显然,当将记忆中的日期时间与已从MongoDB数据源检索的对象中的一个比较时,这显然会产生问题. 我知道Mongo在内部将DateTime作为UTC时间存储.我什至明白为什么它打电话时它可能会返回UTC. 这是辩论开始的地方. 有人建议这只是一个化妆品的问题,仅在显示日期时只是一个问题.因
0 2024-04-16
编程技术问答社区
在C#.Net中调用MongoDB存储的Javascript函数
我需要在C#代码中调用MongoDB存储的JavaScript函数. 我存储的JavaScript函数 getuserinfo function() { return db.getCollection('Profession').find({}); } 执行: db.loadServerScripts(); GetUserInfo(); 它返回以下文档返回该集合(在这里我只粘贴了2个文档,实际上我有10k文档) { "_id" : ObjectId("575845a713d284da0ac2ee81"), "Profession_id" : "575841b313d284da0ac2ee7d", "Prof_Name" : "Chief Officer" } { "_id" : ObjectId("575845d213d284da0ac2ee82"), "Profession_id" : "575841b
0 2024-04-16
编程技术问答社区
如何从C#调用MongoDb中的存储JavaScript
我将SQL Server数据库的移植到MongoDB. 问题是移动存储过程,我阅读了有关MongoDB存储的JavaScript的信息,我想在.NET中进行一些测试.我已经安装了mongodb驱动程序2.4.0,并在名为test_function的mongodb上创建了此功能: function (x) { return x; } 这是我尝试调用该功能的代码: MongoClient oMongoClient = new MongoClient(Properties.Settings.Default.MongoCN); IMongoDatabase oMongoDatabase = oMongoClient.GetDatabase("test_db"); var result = oMongoDatabase.RunCommand("test_function(3)"); 我得到此错误: mongodb.bson.dll中
0 2024-04-16
编程技术问答社区
使用C# BsonArray在MongoDB集合中插入多文档
如何在c# 中使用insertmany()mongodb方法在单个语句中插入多个文档 我的mongodb数据库和连接 IMongoClient _client; IMongoDatabase _database; _client = new MongoClient(); _database = _client.GetDatabase("test"); var collection = _database.GetCollection("EmpInfo"); 我有一个收藏品-BsonArray var EmpInfoArray = new BsonArray { new BsonDocument { {"EmpID", "100"}, {"EmpName", "John"}, {"EmpMobile", new BsonArray
0 2024-04-16
编程技术问答社区
复制一个mongodb集合
使用C#在同一服务器上在MongoDB中复制Collection的合适方法是什么? Mongovue有一个选项"重复集合",C# 是否有类似的东西 解决方案 没有一种内置的方式与C#驱动程序复制集合,但是您仍然可以简单地做到这一点: var source = db.GetCollection("test"); var dest = db.GetCollection("testcopy"); dest.InsertBatch(source.FindAll()); 但是,请注意,这不会复制源集合中的任何索引. Shell的copyTo方法具有相同的限制,因此可能采用类似的实现. 其他解决方案 我遇到了完全相同的问题,但是尽管被接受的答案有效,但我还需要尽可能快地做到这一点. 复制集合的最快方法显然是使用$out管道阶段的聚合物.这样,您就不必下载所有文档,然后重新上传,它们只是在数据库内复制. 这是在Mongo Shell内部执行的微不足道的: db
0 2024-04-16
编程技术问答社区
MongoDB LinQ的 "选择 "方法真的只能检索到字段的一个子集吗?
在Internet上搜索如何使用C#官方驱动程序(但是使用Linq作为基本体系结构)在MongoDB Shell中找到如何做到这一点. // selecting only "field" of a collection db.collection.find( { field : 'value' }, { field: 1 } ); 然后,我在c#linq教程中找到Select方法,这等同于此: collection.AsQueryable().Select(x => new { x.field }); 但是,教程说该方法" 用于从匹配文档"投射新的结果类型. 如何确保此方法仅检索字段的子集,而不是整个结果的子集,然后仅选择子集中的子集? 驱动程序会在检索结果之前构建查询命令吗? 解决方案 驱动程序当前未检索字段的子集.如果您需要该功能,则需要手动进行.此功能的票在这里: .如果需要此需要,请随时留下反馈或投票. 其他解决方案 这是作
0 2024-04-16
编程技术问答社区
查询文档数据库中的子字段
例如,我有以下文档用于收集=交付: { "doc": [ { "docid": "15", "deliverynum": "123", "text": "txxxxxx", "date": "2019-07-18T12:37:58Z" }, { "docid": "16", "deliverynum": "456", "text": "txxxxxx", "date": "2019-07-18T12:37:58Z" }, { "docid": "17", "deliverynum": "999", "text": "txxxxxx",
0 2024-04-16
编程技术问答社区
从azure函数连接到MongoDB
我从Microsoft Azure上运行的C函数连接到MongoDB时遇到了问题.该功能是触发时间的,它应该从mongodb收集一些数据并将其放在存储队列中. 我在to project.json中添加了mongodb依赖项,这就是文件的样子: { "frameworks": { "net46":{ "dependencies": { "MongoDB.Bson": "2.4.2", "MongoDB.Driver": "2.4.2", "MongoDB.Driver.Core": "2.4.2", "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" } } } } 但是,当我致电时: MongoClientSettings settings = MongoClientSettings.F
0 2024-04-16
编程技术问答社区
将Newtosoft JObject直接转换为BsonDocument
尝试使用此示例将JObject转换为BsonDocument (BsonWriter过时,所以我使用BsonDataWriter) var jObject = JObject.Parse("{\"name\":\"value\"}"); using var writer = new BsonDataWriter(new MemoryStream()); jObject.WriteTo(writer); var bsonData = writer.ToBsonDocument(); Console.WriteLine(bsonData.ToJson()); 输出: { "CloseOutput" : true, "AutoCompleteOnClose" : true, "Formatting" : 0, "DateFormatHandling" : 0, "DateTimeZoneHandling" : 3, "StringEscapeHandling" : 0,
0 2024-04-16
编程技术问答社区
如何在MongoDB中禁用歧视器字段(C#驱动程序)
是否有一种方法可以完全禁用(对于所有类)歧视器(" _t")字段,以免被添加到BSON文档中吗? 我指的是: 解决方案 假设我们有一个Square和Rectangle从Shape中继承. public abstract class Shape { public ObjectId Id { get; set; } } public sealed class Square : Shape { public int Size { get; set; } } public sealed class Rectangle : Shape { public int Width { get; set; } public int Height { get; set; } } 就像您说的那样,如果我们运行以下代码. var client = new MongoClient(); var db = client.GetDatabase("test");
0 2024-04-16
编程技术问答社区
MongoDB-不能使用.explain()来获取C#代码中的查询信息?
我正在使用 mongo 2.2 .如何使用C#? 访问查询信息 目前有以下内容以获取我的数据: var records = _collection.Find(filters).ToList(); 我试图添加一个.explain()与我在查询结束时在robomongo中可以做的事情相似: var records = _collection.Find(filters).explain(); 但是,它不存在,我相信它不是光标.有人知道我如何在C#中获取此查询数据吗? 解决方案 由Mongocollection类的Findas()方法产生的Mongocursor类的.Explain()方法.我从找到了答案. var qLinq = Query.Where(x => x.name=="jim"); var exp = Collection.FindAs(qLinq).Explain()
0 2024-04-16
编程技术问答社区
C# Mongo FirstOrDefaultAsync挂起
使用2.0驱动程序以下代码有时会悬挂而永远不会返回. public async Task GetFirst(FilterDefinition query) { return await GetCollection.Find(query).FirstOrDefaultAsync(); } 如果我首次亮相并在返回线上放一个断点,则一切正常返回.在外壳中,正在运行的查询是这样的: db.Customers.find({"Name" : /test$/i}) 解决方案 有2个解决方案: 最后添加ConfigureAwait(false): return await GetCollection.Find(query).FirstOrDefaultAsync().ConfigureAwait(false); 只需返回Task,因为FirstOrDefaultAsync()的结果与要返回的结果相同. public Task G
0 2024-04-16
编程技术问答社区
MongoDB Aggregate()的结果集
我从Mongo Client开始执行一些漂亮的查询和敏捷性..但是现在我想在.NET/C#中使用它,我发现我不能简单地将查询作为文本字段运行. 此外,诉诸于构建聚合管道并运行Collection.Aggregate()函数后,我将获得结果集,但我不知道如何穿越它. 有人可以在这里指导我吗? 这是我的代码: var coll = db.GetCollection("animals"); var match = new BsonDocument { { "$match", new BsonDocument {{"category","cats"}} } }; var group = new BsonDocument{ { "$group", new BsonDocument{ {"_id", "$species"}, {"AvgWeight", new BsonDocument{{
0 2024-04-15
编程技术问答社区
Json.NET反序列化Mongo ObjectId时给出了错误的结果
我正在使用官方的mongo c#驱动程序,restsharp用json.net致电REST API来执行我的序列化/次要化.说我有一个人的课程如下,我想发布并获取: public class Person { [JsonProperty("_id"),JsonConverter(typeof(ObjectIdConverter))] public ObjectId Id {get;set;} public string Name {get;set;} } 我创建一个新人对象: var person = new Person{Id = ObjectId.GenerateId(),Name='Joe Bloggs'}; 发布它,在服务器上我看到以下是正确的: { _id: 52498b56904ee108c99fbe88, name: 'Joe Bloggs'} 问题是,当我执行A get objectid时,我会在客户端上获得{0000000000
0 2024-04-15
编程技术问答社区
MongoDb/C#过滤并获取所有子文件
我很难查询mongo-db系列. 我正在使用的文档 public class Customer { public ObjectId Id { get; set; } public int CustomerId { get; set; } public List Addresses { get; set; } } public class Address { public string Name { get; set; } } 一些样品数据 { CustomerId: 2, Addresses: [ { Name: "Daniel" }, { Name: "Eric" }, { Name: "Dan" } ] }
0 2024-04-15
编程技术问答社区
用官方的C#驱动更新MongoDB中的嵌入式文档
如果我有一个包含嵌入式部门的公司集合: { "_id": 1 "_t": "Company", "Name": "Test Company" "Divisions": [ { "_id": 1 "_t": "Division", "Name": "Test Division 1" }, { "_id": 2 "_t": "Division", "Name": "Test Division 2" } ] } 使用官方时,保存/更新整个部门的最佳方法是什么. 10Gen C#驱动程序? (最新的0.9版本.) 我正在使用update.addtosetwrapped添加部门,这很好,但是我也希望能够根据其_id更新文档. 例如,如果我定义以下更新方法: public void UpdateDivis
0 2024-04-15
编程技术问答社区