使用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();
答案 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;
}