MongoDB C#从ID列表中获取所有文档

时间:2016-06-13 11:55:58

标签: c# .net mongodb

我有一个ID列表

List<string> Ids;

我想检索与这些ID相匹配的所有文件。

网上有解决方案:

var ids = new int[] {1, 2, 3, 4, 5};
var query = Query.In("name", BsonArray.Create(ids));
var items = collection.Find(query);

但他们都使用旧的C#驱动程序和(不再那么新的)2.2.4驱动程序API已更改,我无法找到如何构建此查询。

1 个答案:

答案 0 :(得分:12)

请参阅下面的代码段(使用LINQPad制作)

void Main()
{
    // To directly connect to a single MongoDB server
    // or use a connection string
    var client = new MongoClient("mongodb://localhost:27017");
    var database = client.GetDatabase("test");


var collectionEmpInfo = database.GetCollection<Employee>("Employee");
Employee EmpInfo = new Employee
{

    EmpID = "103",
    EmpName = "John",
    CreatedAt = DateTime.Now,
    EmpMobile = new List<Mobile>
    {
        new Mobile{ MobNumber = "55566610", IsPreferred = true, MobID = ObjectId.GenerateNewId() },
        new Mobile{ MobNumber = "55566611", IsPreferred = false, MobID = ObjectId.GenerateNewId() },
    }
};
//collectionEmpInfo.InsertOne(EmpInfo);

var filterDef = new FilterDefinitionBuilder<Employee>();
var filter = filterDef.In(x=>x.EmpID , new[]{"101","102"});
filter.Dump();
var empList = collectionEmpInfo.Find(filter).ToList();
empList.Dump();
}
public class Employee
{
   public ObjectId Id  { get; set; }
    public string EmpID { get; set; }
    public string EmpName { get; set; }
    public List<Mobile> EmpMobile { get; set; }
    public DateTime CreatedAt { get; set; }
}

public class Mobile
{
    public ObjectId MobID { get; set; }
    public string MobNumber { get; set; }
    public bool IsPreferred { get; set; }
}

和结果截图

linquPaDscreenShot