Tag: mongodb

哪种方式更好? 将媒体文件以字节数组或字符串forms保存到MongoDB?

我将MongoDB中的媒体文件(图片,PDF等)保存为字节数组。 我看到人们通过编码和解码字节数组来保存它的例子。 有什么不同? 也许性能差异? 那么哪种方式更好? 我注意到当文件保存为字节数组时,Mongo Management Studio打开集合的时间更长,然后保存为字符串

在ApiController中返回BsonDocument

我正在使用ASP.NET MVC 4中的API,我使用MongoDB作为后端。 由于MongoDB存储和返回BSON对象,以及MVC4返回JSON对象,我认为在其余调用上简单地返回BSON会相当容易。 这不起作用,所以我在BsonDocument类上找到了.toJson()方法,将BSON对象转换为JSON字符串表示。 不幸的是,当我通过我的ApiController返回此字符串时,MVC显然认为它应该将字符串重新序列化为JSON,浏览器无法解释。 所以我想问一下是否有办法禁用特定ApiController方法的JSON序列化? 我目前的解决方法是在返回之前对从.toJson()返回的JSON进行反序列化,使其再次序列化,但这似乎相当浪费。

使用mongo C#驱动程序在嵌入式文档中维护Id属性名称

我有一个mongo文档,其中包含一系列嵌入式文档。 嵌入的文档具有名为“Id”的属性。 { Name: “Outer object”, Embedded: [ {Name: “Embedded A”, Id: “5f1c591a71dc237199eeaeda”} ] } 我的C#映射对象看起来像这样(显然是简化) public class Outer { public string Name { get; set; } public IEnumerable Inners { get; set; } } public class Inner { public string Name { get; set; } public string Id { get; set; } } 当我向数据库写一个外部时,C#驱动程序将Inner.Id属性的名称更改为_id。 […]

c#mongodb区分大小写搜索

我有一个集合,我存储用户的电子邮件和密码。 我显然不希望要求用户插入他的电子邮件区分大小写,并且与他第一次注册时完全一样。 我正在使用mongodb 2.0 c#驱动程序,我正在重复它,因为我看到了用正则表达式编写的查询的解决方案,但我担心我不能在这里使用它。 我的查询看起来像 var filter = Builders.Filter.And( Builders.Filter.Eq(u => u.Email, email), Builders.Filter.Eq(u => u.Password, password)); ME_User foundUser = null; var options = new FindOptions { Limit = 1 }; using (var cursor = await manager.User.FindAsync(filter, options)) { while (await cursor.MoveNextAsync()) { var batch = cursor.Current; foreach (ME_User user in batch) foundUser = […]

如何在MongoDB中的文档内聚合数组并获取多个条件的计数?

我正在编写一个程序,该程序接收车辆刷新数据的XML文件并将其转换为JSON,以便将其存储在MongoDB数据库中。 XML的开头是这样的: PASSED PASSED 在我将其转换为JSON并添加项目标识符之后,我留下了一个像这样的格式: { “FlashReportGeneratorAddedTag” : { “VehicleEntry” : [ { “VehicleStatus” : “PASSED” }, { “VehicleStatus” : “PASSED” } ] }, “project_id” : “1234” } 我想做的是获得项目1234的每个文件中通过的车辆总数和车辆数量的总数,但我没有运气。 我已经尝试过使用我所知道的基本聚合技能,但我不能简单地按project_id进行分组,因为当我需要聚合其中的数组时,它会按文档分组。 我还没有找到任何资源告诉你是否可以或不能一次聚合两个值(获得传递的总和和失败计数的总和)。 作为最后的手段,我可​​以改变文档样式,让每个VehicleEntry都是它自己的文档,但是如果可以的话,我想采用并存储XML。 编辑使用Unwind我能够为我正在寻找的数组设置聚合: var aggregate = collection.Aggregate().Match(new BsonDocument { { “project_id”, “1234” } }).Unwind(i => i[“FlashReportGeneratorAddedTag.VehicleEntry”]); 但是,我找不到合适的方法对这些进行分组,以便在整个arrays中获得通过/失败计数。 我假设有一些方法我需要使用匹配function,但我不知道如何做到这一点,而不排除这两个条件之一。 我是否必须运行聚合两次,一次是传递,一次是失败?

使用MongoDB C#驱动程序从所有文档中删除数组元素

鉴于以下内容: { “_id” : 1, “name” : “Nature”, “area”: [ { “place”: “Some place”, “discoveredBy”: “” }, { “place”: “Some place 2”, “discoveredBy”: “” } ], “_id” : 2, “name” : “Tropics”, “area”: [ { “place”: “Some place”, “discoveredBy”: “” }, { “place”: “Some place 2”, “discoveredBy”: “” } ] } 在代码中,我删除了discoveredBy属性。 我现在如何使用C#驱动程序更新(取消设置)我的ENTIRE数据库,以便还删除discoveredBy? 生成的db应如下所示: { […]

替换数组中的值

我正在使用Mongodb C#官方驱动程序。 我想用一些其他值更改数组中的特定值。 该数组包含值列表。 例如。 { _id: id1, values: [23, 78, 20] } 我想要假设将25替换为25.我知道答案是正确的。 首先,我拉出那个元素然后推动其他元素。 但问题是,如果元素不存在,那么push也将插入元素。 其次,它将改变位置并在最后插入元素。 请告诉我怎么做。

用于评论的MongoDB文档设计(及其回复评论)

我的模型看起来像: class Comment { public string ID { get; set; } public string ArticleType { get; set; } public string ArticleID { get; set; } public string Body { get; set; } public DateTime DateCreated { get; set; } public string UserID { get; set; } } 我正在创建一个应用程序来存储关于我们应用程序中其他内容的评论例如,如果评论是关于产品的,那么ArticleType可以是“product”而ArticleID将是产品ID … 我将使用mongodb来存储这些数据 我希望能够回复评论,并按层次结构存储响应我是否应该在评论文档中存储列表? 我读过 Rob Ashton撰写的这篇文章,对于像博客文章这样的事情是有意义的,它的评论…… 但是,在我的模型中,“回复评论”直接引用父评论。 […]

MongoDB C#Aggregation – unwind – > groupBy

我有OrderItems的对象Order。 我需要按字段ProductId(在orderItems中)对数据进行分组,并显示每个产品的总和。 此解决方案效果很好: var collection = database.GetCollection(“Order”); var result = collection.Aggregate().Unwind(x=>x.OrderItems) .Group(new BsonDocument { {“_id”, “$OrderItems.ProductId”}, {“suma”, new BsonDocument { { “$sum” , “$OrderItems.UnitPriceExclTax”} } } }).ToListAsync().Result; 但我不想使用管道,我需要在c#中准备完整的样本。 而这个解决方案不起作用。 var collection = database.GetCollection(“Order”); var result = collection.Aggregate() .Unwind(x=>x.OrderItems) .Group(i => i.ProductId, g => new { ProductId = g.Key, Count = g.Sum(i.UnitPriceExclTax) }) 谢谢你的帮助,

使用MongoDB C#映射私有支持字段

我正在尝试在MongoDB中映射一个私有支持字段。 我的模型看起来像: public class Competitor { private IList _competitorBests; public virtual int CompetitorId { get; set; } public virtual string Name { get { if (Type == “Team”) return TeamName; return FirstName + ” ” + LastName; } } public virtual IEnumerable CompetitorBests { get { return _competitorBests.ToArray(); } } } 我基本上试图将_competitorBests映射为CompetitorBests(存在于mongo中的文档中) 注意:这个模型由NHibernate共享(因此是virtual ) 我在文档中看不到任何明显的东西。 […]