我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”字符串)
任何帮助或建议将不胜感激。
谢谢。