MongoDB 过滤器中的 CSharp 不正确
MongoDB CSharp In Filter Is Not Correct
我有一个通信文档集合,其中包含一个名为 CommId 的 Int 字段,我正在尝试使用以下代码查找包含在一个整数数组中的所有匹配文档。如果此查询有效,它应该 return 5 个文档。
var filter = Builders<Communication>.Filter.In(x => x.CommID, CommunicationIds);
List<Communication> allComms = _context.Communications.Find(filter).ToList<Communication>();
CommunicationIds 是 Ints 数组,当我逐步执行代码时,我看到它包含 [1,2,3,4,5]。在单步执行代码时,我已验证 Communications 集合包含所有 5 个文档(总共有数百个文档)的条目,并且每个文档的 CommID 都等于 1、2、3、4、5。
然而,当我 运行 这个查询时,我没有得到任何结果 - 我的过滤器有些不正确,但我不知道为什么。有人有什么建议吗?
事实证明,MongoDB 将 JSON 文档加载为字符串值而不是整数。我必须为 MongoDB 获取 Navicat,然后检查列值类型。一旦我知道了这个问题,就很容易纠正。一旦所有整数值实际上都是整数而不是字符串,查询就可以正常工作。
我有一个通信文档集合,其中包含一个名为 CommId 的 Int 字段,我正在尝试使用以下代码查找包含在一个整数数组中的所有匹配文档。如果此查询有效,它应该 return 5 个文档。
var filter = Builders<Communication>.Filter.In(x => x.CommID, CommunicationIds);
List<Communication> allComms = _context.Communications.Find(filter).ToList<Communication>();
CommunicationIds 是 Ints 数组,当我逐步执行代码时,我看到它包含 [1,2,3,4,5]。在单步执行代码时,我已验证 Communications 集合包含所有 5 个文档(总共有数百个文档)的条目,并且每个文档的 CommID 都等于 1、2、3、4、5。
然而,当我 运行 这个查询时,我没有得到任何结果 - 我的过滤器有些不正确,但我不知道为什么。有人有什么建议吗?
事实证明,MongoDB 将 JSON 文档加载为字符串值而不是整数。我必须为 MongoDB 获取 Navicat,然后检查列值类型。一旦我知道了这个问题,就很容易纠正。一旦所有整数值实际上都是整数而不是字符串,查询就可以正常工作。