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