标签: mongodb-.net-driver

MongoDB - 如何忽略反序列化错误

我正在使用 MongoDB CSharp 驱动程序来检索数据集合。不幸的是,其中一些数据不是很“干净”,因为某些字段同时是字符串和整数。正如预期的那样,反序列化过程每次遇到与正确类型不匹配的数据时都会引发异常。

我在网络上以及 StackOverflow 上进行了广泛的搜索,但都没有成功。有没有办法在反序列化时简单地处理/忽略异常并移至下一条记录?

我的代码看起来与此类似:

        MongoClient client = new MongoClient(MongoConnectionString);
        MongoServer server = client.GetServer();
        MongoDatabase database = server.GetDatabase(DatabaseName);

        MongoCollection<BookingLines> bookingLines = database.GetCollection<BookingLines>("bookinglines");

        var query = from e in bookingLines.AsQueryable() where e.Status != "void" select e;
Run Code Online (Sandbox Code Playgroud)

该代码通常会在上面的最后一行抛出错误。我还尝试将 [BsonIgnore] 属性添加到某些字段。

任何想法或建议都会非常有帮助。

c# mongodb deserialization mongodb-.net-driver

1
推荐指数
1
解决办法
4152
查看次数

MongoDB 中带有分区的 sql server 行号,用于返回行的子集

如何使用 MongoDB-Csharp 驱动程序编写以下查询

 SELECT SubSet.*
 FROM   ( SELECT    T.ProductName ,
                    T.Price ,
                    ROW_NUMBER() OVER ( PARTITION BY T.ProductName ORDER BY T.ProductName ) AS ProductRepeat
          FROM      myTable T
        ) SubSet
 WHERE  SubSet.ProductRepeat = 1
Run Code Online (Sandbox Code Playgroud)

我想要实现的是

收藏

  • 产品名称|价格|SKU
  • 帽|10|AB123
  • 包|5|ED567
  • 帽|20|CD345
  • 帽|5|EC123

预期结果是

  • 产品名称|价格|SKU
  • 帽|10|AB123
  • 包|5|ED567

这是一次尝试(请不要使用对象和字段)

public List<ProductOL> Search(ProductOL obj, bool topOneOnly)
        {
            List<ProdutOL> products = new List<ProductOL>();

            var database = MyMongoClient.Instance.OpenToRead(dbName: ConfigurationManager.AppSettings["MongoDBDefaultDB"]);
            var collection = database.GetCollection<RawBsonDocument>("Products");
            List<IMongoQuery> build = new List<IMongoQuery>();

            if (!string.IsNullOrEmpty(obj.ProductName))
            {
                var ProductNameQuery = Query.Matches("ProductName", new BsonRegularExpression(obj.ProductName, …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-.net-driver

1
推荐指数
1
解决办法
2257
查看次数

与以下使用数组更新运算符 $[&lt;identifier&gt;] 的查询等效的 MongoDB C# 驱动程序是什么

来自https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/#up。S [%3C标识符%3E]

给定以下集合

{
   "_id" : 1,
   "grades" : [
      { "grade" : 80, "mean" : 75, "std" : 6 },
      { "grade" : 85, "mean" : 90, "std" : 4 },
      { "grade" : 85, "mean" : 85, "std" : 6 }
   ]
}
{
   "_id" : 2,
   "grades" : [
      { "grade" : 90, "mean" : 75, "std" : 6 },
      { "grade" : 87, "mean" : 90, "std" : 3 },
      { "grade" : 85, …
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-query mongodb-.net-driver

1
推荐指数
1
解决办法
2715
查看次数

如何在 C# Mongodb 强类型驱动程序中存储和查询坐标数组

我正在使用官方 C# MongoDb 强类型驱动程序版本 2.5.0 与 MongoDB 交互。

我有一个经度和纬度坐标数组,我想将它们存储在 MongoDB 中。

用于存储坐标数组的类的名称是什么?所以我最近可以执行以下查询,检查如果给定坐标靠近坐标数组中的任何点,如何实现这一点?

这是演示该问题的简单代码。

        var coordinates = new List<(double latitude, double longitude)>();

        //Store coordinates array in the database

        (double latitude, double longitude) point = (-33.847927, 150.6517805);

        int maxDistance = 300;//Max Distance in meters

        //Check if any point in the coordinates array is 300 m near the given point
Run Code Online (Sandbox Code Playgroud)

编辑:-

根据下面@CodeFuller评论中提到的这个问题:-

数组上的 MongoDB 地理空间索引(多键 + 地理空间)

MongoDB 不支持数组上的地理空间索引,因此请考虑以下类:

class SomeDocument {

    public ObjectId Id { get; set; }

    public string Title { …
Run Code Online (Sandbox Code Playgroud)

.net c# mongodb mongodb-query mongodb-.net-driver

1
推荐指数
1
解决办法
3709
查看次数

MongoDb 使用过滤器来匹配列表

我有一个清单BsonDocument

   var list = db.GetCollection<BsonDocument>(collectionName); 
   var myIds = list.Find(_ => true)
    .Project(Builders<BsonDocument>.Projection.Include("_id"))
    .ToList();
Run Code Online (Sandbox Code Playgroud)

其中包含:

myIds = "{ 
{ "_id" : "cc9d9282-c9d2-4cba-a776-ffddsds274d5" },  
{ "_id" : "2c1ddd82-c9d2-4dda-afr6-d79ff1274d56" },  
{ "_id" : "ss969281-c9d2-4cba-a776-d79ffds274d5" }  
}"
Run Code Online (Sandbox Code Playgroud)

并想这样查询:

var deleted =list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", myIds));
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下方法:

var filter = new BsonDocument("_id", new BsonDocument("$in", new BsonArray(myIds)));
var deleted = list.DeleteMany(filter);
Run Code Online (Sandbox Code Playgroud)

返回属性DeletedCount = 0 有人能指出过滤器似乎有什么问题吗?

c# intersection mongodb mongodb-.net-driver

1
推荐指数
1
解决办法
3406
查看次数

尝试按对象分组作为键时,字段必须是累加器对象错误

我正在尝试按集合中的多个属性对文档进行类型安全的分组。我发现问题不在于按多个属性本身进行分组,而是键是对象 ( new { }) 而不是字符串。

这有效:

collection.Aggregate().Group(x => x.Name, x => new { Name = x.Key, Count = x.Sum(s => 1) }).ToList();
Run Code Online (Sandbox Code Playgroud)

这不起作用:

collection.Aggregate().Group(x => new { Name = x.Name }, x => new { Name = x.Key.Name, Count = x.Sum(s => 1) }).ToList();
Run Code Online (Sandbox Code Playgroud)

错误是:

MongoDB.Driver.MongoCommandException:“命令聚合失败:字段“名称”必须是累加器对象。

当我将不起作用的查询转换为字符串时,我得到以下信息:

aggregate([{ "$group" : { "_id" : { "Name" : "$Name" }, "Name" : "$_id.Name", "Count" : { "$sum" : 1 } } }])
Run Code Online (Sandbox Code Playgroud)

我想这里的问题是这部分"Name" : "$_id.Name"。我该如何解决这个问题?

我目前使用的是 2.8.0 版的 …

c# mongodb aggregation-framework .net-core mongodb-.net-driver

1
推荐指数
1
解决办法
3405
查看次数

C# 驱动程序 MongoDb:如何使用“UpdateOneAsync”

我只想更新文档的一个字段。我的意思是理解我必须使用UpdateOneAsync. 当我尝试这样做时,我总是得到MongoDB.Bson.BsonSerializationException : Element name 'Test' is not valid'..

以下代码重现了我的问题(xUnit、.NET Core、Docker 中的 MongoDb)。

public class Fixture
{
    public class DummyDocument : IDocument
    {
        public string Test { get; set; }

        public Guid Id { get; set; }

        public int Version { get; set; }
    }

    [Fact]
    public async Task Repro()
    {
        var db = new MongoDbContext("mongodb://localhost:27017", "myDb");
        var document = new DummyDocument { Test = "abc", Id = Guid.Parse("69695d2c-90e7-4a4c-b478-6c8fb2a1dc5c") };
        await db.GetCollection<DummyDocument>().InsertOneAsync(document);
        FilterDefinition<DummyDocument> u = new …
Run Code Online (Sandbox Code Playgroud)

c# mongodb-.net-driver

1
推荐指数
2
解决办法
5069
查看次数

如何使用官方C#驱动程序在mongoDB中执行SQL Like运算符

如何使用官方c#驱动程序在mongodb中执行以下SQL查询?

Select * from tblUser where FirstName Like '%as%'
Run Code Online (Sandbox Code Playgroud)

mongodb sql-like mongodb-.net-driver

0
推荐指数
1
解决办法
3437
查看次数

批量插入的安全模式

当我在分片群集上的批量插入上使用安全模式(仅限日记)时,结果将作为C#驱动程序上的SafeModeResult列表返回(我假设它在其他驱动程序上也类似).列表中的每个结果意味着什么?

它是批处理中的每个项目还是每个分片,还是每个消息发送到服务器?

批量插入是原子的还是不是专门在分片环境中?如果没有,我怎么知道我的批次哪个部分失败了?

mongodb mongodb-.net-driver

0
推荐指数
1
解决办法
1003
查看次数

如何在多个字符串上查询mongo集合

我是Mongo Db的新手并试图写一些查询.

我需要获取其品牌价值不等于"any"或"none"或包含"not"的产品列表.

我尝试了一些这样的东西,但它不起作用.

var query = { "BarCode": { "$exists": 1,"$not":"any" }};
Run Code Online (Sandbox Code Playgroud)

但它几乎没有错误.有人能帮助我吗

谢谢,

纳雷什

mongodb mongodb-.net-driver

0
推荐指数
1
解决办法
2757
查看次数