【发布时间】:2015-06-06 07:34:32
【问题描述】:
我必须以用户输入集合名称、字段名称和字段值的方式对集合运行动态查询,并且我必须首先检查用户提供的字段名称是否存在于集合中,如果不存在则我必须运行另一个查询,如下例所示。
例如:
如果用户输入集合名称user,则字段名称为type,字段值为article。并根据参数我必须查询如下:
1) 如果集合user 中存在type 字段,我的查询将是:
query = user.find({type:'article'})
2) 如果类型不是集合user 的字段,我的查询将是:
query = user.find()
我尝试了$exists,但它不适合我。在查询之前如何使用$exists?因为我的集合、字段名称和字段值都是动态的。
以及如何检查type 字段是否存在于user 集合中?
我已经尝试了$exists 的解决方案,但我想知道是否有其他方法。
【问题讨论】:
-
node.js 使用的是哪个 mongodb 驱动程序?
-
使用这种设计,您很可能会遇到性能问题。当您想知道该字段是否存在于集合中anywhere 时,您需要执行全集合扫描或使用索引。但是当您事先不知道您的字段名称时,您无法为每个可能的字段创建索引。这意味着您的每个查询都将对集合中的条目数具有线性性能。
标签: javascript node.js mongodb