我希望能够通过在GUI应用程序中输入的部分_id值来找到我的集合中的文档。
经过一番搜索,我发现至少可以使用以下过滤器按其部分id查找文档:
{ $where: "this._id.str.match(/5a.*/)" }
(其中5a
是用户输入的部分id值)
我的服务器应用程序处理这些搜索时还支持分页,因此我总是查询数据库以计算/估计匹配文档的数量。
但是,如果我将这个$where
表达式放入我传递给我的集合的CountDocumentsAsync()
的FilterDefinition
中,我只会得到一个异常:
MongoDB.Driver.MongoCommandException: Command aggregate failed: $where is not allowed in this context
我查询了MongoDB的
countDocuments
方法,发现在countDocuments()
中不能使用$where
运算符,应该使用$expr
代替。不幸的是,我无法使用
$expr
让任何东西工作,因为我找不到任何有用的示例来帮助我满足我的特定要求。我只是尝试将
$where
表达式包装在$expr
表达式中,但似乎不起作用(Command aggregate failed: Unrecognized expression '$where'
)有人能帮我解决这个问题吗?