Tag: mongodb

如何在MongoDB中的FindOne中使用SetField用于C#驱动程序

我使用mongodb的官方C#驱动程序,我想使用像Find这样的FindOne查询中的SetFields。 var query = Query.EQ(“Name”, name); Users.Find(query).SetFields(Fields.Exclude(“Password”)); 是否可以这样做,因为FindOne返回一个实际的类而不是mongodb游标。

Find和FindAsync之间的区别

我正在编写一个非常非常简单的查询,它根据其唯一ID从集合中获取文档。 经过一些frusteration(我是mongo和async / await编程模型的新手)后,我想出了这个: IMongoCollection collection = // … FindOptions options = new FindOptions { Limit = 1 }; IAsyncCursor task = await collection.FindAsync(x => x.Id.Equals(id), options); List list = await task.ToListAsync(); TModel result = list.FirstOrDefault(); return result; 它很棒! 但我一直看到对“查找”方法的引用,我解决了这个问题: IMongoCollection collection = // … IFindFluent findFluent = collection.Find(x => x.Id == id); findFluent = […]

Mongodb公约包

如何在c#中使用mongodb ConventionPack我有以下代码: MongoDatabase Repository = Server.GetDatabase(RepoName); this.Collection = Repository.GetCollection(CollectionName); var myConventions = new ConventionPack(); myConventions.Add(new CamelCaseElementNameConvention()); 约定包是否自动附加到this.Collection? 当我加载一个新对象时,它会自动保持这种情况吗? 我是否必须在类声明中添加标签(如数据合同)?

使用官方C#驱动程序在Mongo DB中进行升级

在mongodb的官方文档中,他们提到了upserts,所以编写一个upsert命令而不是: if (_campaignRepo.Exists(camp)) { _campaignRepo.DeleteByIdAndSystemId(camp); } _campaignRepo.Save(camp); 如果可能的话,可以在db级别实现该逻辑的东西。 那么如果有一个upsert的方法是什么?

使用mongodb和guids来获取文档的ID是什么有效的方式来存储Guids以轻松检索实际的Guid?

我正在运行Mongodb的2.06版本和10Gen提供的C#驱动程序的版本(1.5)。 我的每个实体都有一个Id属性设置…… [BsonId(IdGenerator = typeof(GuidGenerator))] public Guid Id { get; set; } Id字段存储为Binary – 3:UuidLegacy。 由于我在实体上调用ToJson()时它的存储方式,它返回Id的以下javascript对象。 _id : Object $binary: “some values here” $type: “03” 这显然是因为数据存储为Binary = 3:UuidLegacy。 这是有道理的。 我想在我的Javascript代码中使用实际的Guid。 如果我将我的Id属性看起来如下,那么对MongoDB有多高效? [BsonId(IdGenerator = typeof(GuidGenerator)),MongoDB.Bson.Serialization.Attributes.BsonRepresentation(BsonType.String)] public Guid Id { get; set; } 这使得mongodb将我的Id存储为字符串。 但这真的有多高效? 我猜我的Id的二进制格式更好,但我真的需要Guid。 我如何从二进制 – 3:uuidLegacy转到我在json中需要的Guid? 我想另一个想法是我可以使用发送给我的$ binary值吗? 我使用Id执行查找,例如我的查询字符串的一部分。 谢谢,

在Mongo中存储Utc和本地日期时间

我有一个Mongo C#实现,它将datetime存储为UTC。 MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions options = MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions.UtcInstance; var serializer = new MongoDB.Bson.Serialization.Serializers.DateTimeSerializer(options); MongoDB.Bson.Serialization.BsonSerializer.RegisterSerializer( typeof(DateTime), serializer); 我还需要将用户本地时区与UTC一起存储。 为了解释,我有两个属性 DateTime WorkItemToCompleteBy{get; set;} [BsonDateTimeOptions(Kind = DateTimeKind.Unspecified)] DateTime WorkItemToCompleteByLocal{get; set;} 我想将澳大利亚/美国/印度/其他时间存储在本地属性中,并将相应的UTC值存储在另一个属性中。 由于处理了几十个时区,我有代码将UTC转换为所需的时区并将其存储在WorkItemToCompleteByLocal属性中。 我希望Mongo按原样存储这个值并将其返回给我。 问题是Mongo总是将它存储为ISODate并将值转换为Utc版本。 解释。 如果UTC是0730小时,我计算布里斯class时间为1730小时并将其设置为WorkitemToCompleteByLocal,它们将保存为 “WorkItemToCompleteBy” : ISODate(“2013-06-05T07:30:00Z”), “WorkItemToCompleteByLocal” : ISODate(“2013-06-05T12:00:00Z”), Mongo将提供的时间解释为本地, 服务器位于印度,并将其转换为相当于1200小时的UTC。 虽然它将值恢复为1730(IST虽然)但它违背了我的目的并阻止我在Mongo上运行任何基于本地时间的查询。 没有想法。 感谢任何帮助,以帮助存储WorkItemToCompleteByLocal日期’原样’而无需修改

将Queryable 转换回IMongoQuery

请考虑以下代码 var q = from e in myCollection.AsQueryable() where e.Name == “test” select e; 实际的查询非常复杂,我不喜欢使用QueryBuilder而不是LINQ来构建它。 所以我想将它转换回IMongoQuery以在myCollection.Group()调用中使用,因为LINQ没有GroupBy支持。 可能吗?

MongoDB C#Driver 2.0 – 更新文档

我目前正在将我的代码升级到MongoDB C#驱动程序2.0,并且我在升级代码以更新文档时遇到问题。 使用旧版本我能够做到这样的事情: MyType myObject; // passed in var collection = _database.GetCollection(“myTypes”); var result = collection.Save(myObject); 我很难在新版本中找到一种方法。 我找到了一些更新单个字段的例子 var filter = Builders.Filter.Eq(s => s.Id, id); var update = Builders.Update.Set(s => s.Description, description); var result = await collection.UpdateOneAsync(filter, update); 我想用旧方法更新所有字段,方法是Save。 有任何想法吗 ? 非常感谢

MongoDB .Net驱动2.0拉(删除元素)

你能用2.0驱动程序帮助我正确运行“拉(删除)”。 我有一个这样的集合,我想删除第一个跟随者字段命名为fethiye的追随者。 { “_id”: ObjectId(“554e05dfc90d3d4dfcaa2aea”), “username”: “bodrum”, “followerList”: [ { “_id”: ObjectId(“554e0625a51586362c33c6df”), “follower”: “fethiye”, “avatar”: “fethiye.png” }, { “_id”: ObjectId(“554e0625a51586362c33c6df”), “follower”: “izmir”, “avatar”: “izmir.png” } ] } 我该如何解决这个问题呢? var filter = new BsonDocument(“username”, “bodrum”); var update = Builders.Update.Pull(“followerList:follower”, “fethiye”); Person pr = collection.FindOneAndUpdateAsync(filter, update).Result; 谢谢。

MongoDB Linq是否有“解释查询”?

有没有办法在Linq查询上运行.explain()或等效的? 我想知道 实际JSON查询的文本 .explain()的输出(使用的索引等) 拥有查询的执行时间也很好