C#Mongo Query不返回结果

时间:2015-07-09 19:34:50

标签: c# mongodb

使用Mongo In查询时,我遇到了取回结果的问题。当我在本机mongo中测试相同的查询时,它会带回正确的结果。我试图恢复在临时数组中匹配的所有ID。

     var temp = new BsonValue [collection.Count()];
     for (int i = 0; i < collection.Count(); i++)
     {
        temp[i] = collection[i].ID;
     }

     var query = Query.In("ID", temp);
     var collection2 = db.GetCollection<TXT>("TXT").Find(query).ToList();

1 个答案:

答案 0 :(得分:1)

您使用的是哪种版本的MongoDb C#驱动程序?看起来您可能正在使用已弃用的驱动程序版本。

以下是我们如何使用版本2.0.1.27中的.In过滤器的示例:

var filter = Builders<INVENTTXT>.Filter.In(item => item.ITEMID, temp);

var result = await db.GetCollection<INVENTTXT>("INVENTTXT")
                     .Find(filter)
                     .ToListAsync()
                     .Result;

在旧版驱动程序中,假设您的INVENTTXT看起来像这样:

class INVENTTXT
{
    [BsonId]
    public ObjectId _id { get; set; }
    public String ITEMID { get; set; }
}

然后这对我来说可以取回价值:

public static void GetWhereIn()
    {
        var collection = new List<INVENTTXT>()
        {
            new INVENTTXT {ITEMID = "52719635"}
        };

        var temp = new BsonValue[collection.Count()];
        for (int i = 0; i < collection.Count(); i++)
        {
            temp[i] = collection[i].ITEMID;
        }

        var query = Query.In("ITEMID", collection.Select(c => BsonValue.Create(c.ITEMID)));
        var collection2 = db.GetCollection<INVENTTXT>("INVENTTXT").Find(query).ToList();

        var count = collection2.Count;
    }