如何在 C# 中使用 Mongodb.Driver 对 MongoDb 表中的数组对象应用过滤器?

prog1011

MongoDB用来存储我的应用程序数据。现在我想根据 MongoDB 表中 Array 对象的过滤器获取数据。如下图所示在此处输入图片说明

这是我的桌子tblEmployee我想找到那些GroupList字段包含 value 的记录Group5当我在MongoDB中的表在那个时候插入这些记录,因为我存储它Dictionary<string,dynamic>C#代码如下所示。

var clientTest = new MongoClient("mongodb://localhost:XXXX");
var dbTest = clientTest.GetDatabase("Test_DB");
var collectionTest = dbTest.GetCollection<Dictionary<string, dynamic>>("tblEmployee"); 
Dictionary<string, dynamic> obj = new Dictionary<string, dynamic>();
string[] items = { "Group1", "Group2", "Group5", "Group6" };
obj.Add("_id", Guid.NewGuid());
obj.Add("FirstName", "Carlton");
...// Other Props and Values
obj.Add("GroupList", items); // Here value type is String Array.
await collectionTest.InsertOneAsync(obj);

现在,我尝试了下面的代码,根据需要根据过滤器读取数据。

var clientTest = new MongoClient("mongodb://localhost:XXXX");
                var dbTest = clientTest.GetDatabase("Test_DB");
                var collectionTest = dbTest.GetCollection<Dictionary<string, dynamic>>("tblEmployee");
                var builder = Builders<Dictionary<string, dynamic>>.Filter;
                var filter = builder.AnyIn("GroupList", "Group5"); // Used AnyIn to create IN filter for Array object
                var allDataObj = await collectionTest.FindAsync(filter);
                var allDataList = allDataObj.ToList(); 

但是,在allDataList我没有记录的情况下,它应该返回我在上图中突出显示的一条记录(记录号 4)。

请给我建议如何为包含特定值的数组对象构建过滤器(在我的例子中包含“Group5”字符串的数组)

任何帮助或建议将不胜感激。

谢谢。

电动车

这个过滤器

builder.AnyIn("GroupList", "Group5");

将数组视为字符数组,而不是字符串,因为您没有提供泛型类型并且它被推断为char(因为"Group5"字符串是IEnumerable<char>)。因此,生成的查询不是您所期望的。要将数组视为字符串数组,您需要像这样构建过滤器:

var filter = builder.AnyIn("GroupList", new [] {"Group5"});

但是,您可能会从屏幕截图中注意到实际值不是存储在GroupList属性中,而是存储在更深的内部GroupList> 中_v,因此正确的查询应该是:

var filter = builder.AnyIn("GroupList._v", new [] {"Group5"});

编辑:如评论中所述-似乎AnyIn在这种特定情况下(for Dictionary<string, dynamic>)仅适用于旧版本的 C# 驱动程序,而在较新版本中它会产生奇怪的异常。如果您使用的是最新版本的 C# 驱动程序 - 使用来自另一个答案的建议:

var filter = builder.Eq( "GroupList._v", "Group5"); // query will be { GroupList._v: "Group5" }
var filter = builder.In("GroupList._v", new [] { "Group5" }); // query will be { GroupList._v: { $in: [ "Group5" ] }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB \ Driver php如何在第一个集合中使用过滤器进行内部联接

来自分类Dev

如何在 Angular/Express/MongoDB 中使用过滤器创建搜索?

来自分类Dev

如何在Mongodb过滤器中使用比较

来自分类Dev

如何在MongoDB C#Driver 2.0中记录查询?

来自分类Dev

使用过滤器和选项在PHP MongoDB中查询文档的数组字段

来自分类Dev

如何编译Mongodb-c-driver程序?

来自分类Dev

如何在新闻MongoDB-C中使用$ Orderby

来自分类Dev

如何在新闻MongoDB-C中使用$ Orderby

来自分类Dev

MongoDB-linq中包含不受支持的过滤器。如何在Linq查询中使用contains和ToLower?

来自分类Dev

在MongoDB中,如何在数组中使用“ $ expr”?

来自分类Dev

在Azure函数中使用MongoDB.Driver

来自分类Dev

使用PHP的MongoDB \ Driver \ Query类在查询中使用正则表达式设置过滤器

来自分类Dev

如何在MongoDB的嵌套子数组中使用$ filter?

来自分类Dev

如何在mongodb中使用数组查询集合

来自分类Dev

如何在MongoDB中的Spring数据中使用动态模式?

来自分类Dev

如何在MongoDB 3.2中使用DBPointer bson类型

来自分类Dev

如何使用C#MongoDB驱动程序编写嵌套对象属性不能相等的强类型过滤器?

来自分类Dev

MongoDb使用过滤器匹配列表

来自分类Dev

如何在Laravel Framework中使用MongoDB

来自分类Dev

如何在mongodb中使用聚合

来自分类Dev

如何在MongoDB中使用条件查询

来自分类Dev

如何在mongoDB中使用prestashop?

来自分类Dev

如何在mongodb中使用null参数?

来自分类Dev

如何在Mongodb中使用$ add聚合?

来自分类Dev

如何在 MongoDB 中使用查询命令?

来自分类Dev

如何在 mongodb 中使用嵌套组?

来自分类Dev

如何在mongodb中使用ObjectId更新对象数组中的字符串数组?

来自分类Dev

由于mongodb在docker容器中,我如何在MupX中使用restore mongodb?

来自分类Dev

如何使用AngularJS应用过滤器以获取JSON数组中的JSON对象中具有相同值的元素

Related 相关文章

  1. 1

    MongoDB \ Driver php如何在第一个集合中使用过滤器进行内部联接

  2. 2

    如何在 Angular/Express/MongoDB 中使用过滤器创建搜索?

  3. 3

    如何在Mongodb过滤器中使用比较

  4. 4

    如何在MongoDB C#Driver 2.0中记录查询?

  5. 5

    使用过滤器和选项在PHP MongoDB中查询文档的数组字段

  6. 6

    如何编译Mongodb-c-driver程序?

  7. 7

    如何在新闻MongoDB-C中使用$ Orderby

  8. 8

    如何在新闻MongoDB-C中使用$ Orderby

  9. 9

    MongoDB-linq中包含不受支持的过滤器。如何在Linq查询中使用contains和ToLower?

  10. 10

    在MongoDB中,如何在数组中使用“ $ expr”?

  11. 11

    在Azure函数中使用MongoDB.Driver

  12. 12

    使用PHP的MongoDB \ Driver \ Query类在查询中使用正则表达式设置过滤器

  13. 13

    如何在MongoDB的嵌套子数组中使用$ filter?

  14. 14

    如何在mongodb中使用数组查询集合

  15. 15

    如何在MongoDB中的Spring数据中使用动态模式?

  16. 16

    如何在MongoDB 3.2中使用DBPointer bson类型

  17. 17

    如何使用C#MongoDB驱动程序编写嵌套对象属性不能相等的强类型过滤器?

  18. 18

    MongoDb使用过滤器匹配列表

  19. 19

    如何在Laravel Framework中使用MongoDB

  20. 20

    如何在mongodb中使用聚合

  21. 21

    如何在MongoDB中使用条件查询

  22. 22

    如何在mongoDB中使用prestashop?

  23. 23

    如何在mongodb中使用null参数?

  24. 24

    如何在Mongodb中使用$ add聚合?

  25. 25

    如何在 MongoDB 中使用查询命令?

  26. 26

    如何在 mongodb 中使用嵌套组?

  27. 27

    如何在mongodb中使用ObjectId更新对象数组中的字符串数组?

  28. 28

    由于mongodb在docker容器中,我如何在MupX中使用restore mongodb?

  29. 29

    如何使用AngularJS应用过滤器以获取JSON数组中的JSON对象中具有相同值的元素

热门标签

归档