Tag: mongodb

如何使用MongoDB的官方C#驱动程序检索所有嵌入的文档值?

鉴于以下类和示例文档,如何从Question集合中检索AnswerChoice文档,其中AnswerChoice中的_id是’4d6d336ae0f84c23bc1fae00’使用官方C#驱动程序。 谢谢。 public class Question { [BsonId] public ObjectId QuestionId {get;set;} public string Question {get;set;} public List AnswerChoices {get;set;} } public class AnswerChoice { [BsonId] public ObjectId AnswerChoiceId {get;set;} public string Answer {get;set;} public int Order {get;set;} } //示例文档 { “_id”: “4d6d3369e0f84c23bc1facf7”, “Question”: “Question 1”, “AnswerChoices”: [ { “_id”: “4d6d3369e0f84c23bc1facf2”, “Answer”: “Answer Choice A”, “Order”: […]

C#Mongo DB collection.find()方法不接受filter

这些是我的实体; class User { [BsonId] public string Id { get; set; } public string name { get; set; } public List Adress { get; set; } } class Address { [BsonId] public string Id { get; set; } public string AddressName { get; set; } public string AddressDetail { get; set; } } 我的插入代码到mongo db如下,没有问题。 […]

MongoDB的push和root的C#等价物是什么?

我有一群人。 我试图为每个名字找到最老的人。 我可以使用mongoDB控制台命令实现该结果 db.People.aggregate([ { ‘$sort’: { ‘Name’: 1, ‘Age’: -1 } }, { ‘$group’: { ‘_id’: ‘$Name’, ‘docs’: { ‘$push’: ‘$$ROOT’ }, } }, { ‘$project’: { ‘top_one’: { ‘$slice’: [‘$docs’, 1] } } } ]) 对于C#驱动程序,这相当于什么? 我特别遇到麻烦 ‘docs’: { ‘$push’: ‘$$ROOT’ }, 这是我当前的C#查询: collection.Aggregate(aggArgs) .SortByDescending(x => x.Age) .Group(x => x.Name, x => new […]

在Mongodb中按日期汇总

我正在编写一个function,我需要按日期分组。 这是我目前的做法: //Assuming this is my sample document in the collection { “_id” : ObjectId(“56053d816518fd1b48e062f7”), “memberid” : “7992bc31-c3c5-49e5-bc40-0a5ba41af0bd”, “sourceid” : NumberInt(3888), “ispremium” : false, “createddate” : { “DateTime” : ISODate(“2015-09-25T12:26:41.157+0000”), “Ticks” : NumberLong(635787808011571008) }, “details”: { //a large sub-document } } 给定会员ID,开始日期和结束日期; 我需要搜索与这些filter匹配的集合,并按日期对结果进行分组。 换句话说,我需要实现的结果是一个列表(例如,2015年12月10日 – 计数是5,13 / 10/2015 – 计数是2)。 StartDate和EndDate是DateTime的类型。 C#是我使用的编程语言,目前我写的方式是: var builder = […]

将mongodb集合查询为动态

我在我的数据库中保存了一个dynamic对象,但我还希望将其作为动态对象进行检索。 如何才能做到这一点? 我试过这样: public dynamic GetItemById(ObjectId id) { dynamic result = Db.GetCollection(“Items”).Find(x => x.Id == id).FirstOrDefaultAsync().Result; return result; } 但这给了我以下错误: CS1963表达式树可能不包含动态操作 我知道这可以通过使用类型化对象而不是动态对象来修复。 但我不想使用任何类型的对象,因为这种方式违背了使用像MongoDB(或至少是imho)这样的NoSQL数据库的全部目的。 如何使用dynamic对象通过Id或任何其他属性查询我的集合?

无法使用接口确定i => i.Id的序列化信息

首先,我知道已经存在此错误消息的问题,但我没有发现任何与使用此类查询的接口相关的问题。 我目前正在尝试使用C#Driver 2.0更新MongoDB实体。 但是,我在尝试构建查询时遇到错误(我假设它是Builders.Filter.Eq(i => i.Id, entity.Id)代码)并且我是收到以下错误: 无法确定i => i.Id的序列化信息。 我有以下课程,我正在尝试更新 public interface IEntity { string Id { get; set; } } public interface ITrack : IEntity { string Name { get; set; } } public class TrackDTO : ITrack { [BsonId] public string Id { get; set; } public string Name { get; set; […]

mongoDB重命名嵌入字段

我们如何使用C#和mongoDB重命名嵌入字段? 文档Person的一个例子是: { Id: 1, LastName: “Smith”, FirstName: “John”, Orders: { Id: 1, Name: “Trousers” // I want to rename **Name** into **Something** } } 使用mongoDB语法,它就像是 db.Users.update({}, {$rename:{“Orders.Name”:”Orders.Something”}},true, true) 谢谢。

不能在MongoDb C#上使用Linq和嵌套类List

我有以下课程: public class Company { [BsonId] public string dealerId = null; public List dealers = new List(); } public class Dealer { public string dId = null; public int dIndex = -1; public List stores = new List(); } public class AutoStore { public string type = null; public Dictionary data = new Dictionary(); } […]

MongoDB C#驱动程序检查身份validation状态和角色

这是我使用MongoDB身份validation机制登录MongoDB的代码。 try { var credential = MongoCredential.CreateMongoCRCredential(“test”, “admin”, “123456”); var settings = new MongoClientSettings { Credentials = new[] { credential } }; var mongoClient = new MongoClient(settings); var _database = mongoClient.GetDatabase(“test”); var collection = _database.GetCollection(“book”); var filter = new BsonDocument(); var document = collection.Find(new BsonDocument()).ToList(); } catch (Exception ex) { } 当我们在Credential中输入错误的用户名/密码时,如何检查登录结果? 目前我无法检查它,我必须等待collection.Find().ToList()抛出一个TimeoutException ,并在此上下文中它的身份validation失败。 我们必须创建一个CRUD来检查身份validation结果(通过捕获TimeoutException […]

如何在使用mongo csharp插入后获取rcently插入文档的_id?

我能够使用以下代码成功插入新文档,但我无法获取新插入文档的_id。 插入后,user为null。 谢谢! MongoServer server = MongoServer.Create(); MongoDatabase test = server.GetDatabase(“Test”); MongoCollection users = test.GetCollection(“Users”); BsonDocument user = new BsonDocument(); user.Add(“FirstName”, “John”); user.Add(“LastName”, “Michael”); user.Add(“Address”, “123 Main Street”); user.Add(“City”, “Newport Beach”); user.Add(“State”, “CA”); user.Add(“ZipCode”, “92660”); user.Add(“Email”, “John.Michael@myemail.com”); user.Add(“CreatedDate”, DateTime.Now); user.Add(“IPAddress”, “10.1.1.1”); user = users.Save(user); string idSTring = user[“_id”].ToString().Replace(“\””, “”);