如何在MongoDB和C#中基于双字段匹配列表与集合数据
基于多字段匹配的MongoDB查询:用find方法即可实现
完全可以只用find方法实现需求,不需要依赖aggregate。
MongoDB的find支持通过$in操作符匹配多字段组合的文档,你只需要把C#列表中的对象转换成包含name和Code键值对的数组,作为$in的参数即可。
MongoDB原生查询示例
db.yourCollection.find({ $in: [ { name: "user1", Code: 1 }, { name: "user2", Code: 1 }, { name: "user1", Code: 2 } ] })
这个查询会精准匹配集合中name和Code同时与数组内任意一个对象完全一致的文档,返回结果就是你预期的两条数据。
对应的C#驱动代码示例
你可以直接将C#列表转换为匿名对象列表或者BsonDocument列表来构建查询条件:
// 方式1:使用匿名对象构建过滤条件 var filterItems = myList.Select(item => new { item.name, item.Code }).ToList(); var filter = Builders<MyObject>.Filter.In(x => new { x.name, x.Code }, filterItems); var matchedDocs = collection.Find(filter).ToList();
或者用BsonDocument的方式:
// 方式2:使用BsonDocument构建过滤条件 var bsonItems = myList.Select(item => new BsonDocument { { "name", item.name }, { "Code", item.Code } }).ToList(); var filter = new BsonDocument("$in", new BsonArray(bsonItems)); var matchedDocs = collection.Find(filter).ToList();
这种方式直接通过find就能完成多字段组合的匹配,逻辑简洁且性能高效,完全不需要用到aggregate。
内容的提问来源于stack exchange,提问作者Mohammad Taherian
相关产品推荐
相关产品推荐

