Javascript 如何显式查询字段并获得所有可能的结果?蒙戈

Javascript 如何显式查询字段并获得所有可能的结果?蒙戈,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,如果你有这样的收藏 user { name: String, email: String, information: String } 你可以这样做,以得到一份所有约翰的医生的信息列表 db.user.find({name: "John", information: "doctor" }); 现在,当有变量输入时,这使得代码变得多余。例如,要过滤的字段的排列。我正试图使我的查询通用化,比如这个坏的坏例子。 因此,我可能希望能够显式地声明可以匹配任何值的字段。以下示例在理论上应返回相同的

如果你有这样的收藏

   user {
name: String,
email: String,
information: String
}
你可以这样做,以得到一份所有约翰的医生的信息列表

db.user.find({name: "John", information: "doctor" });
现在,当有变量输入时,这使得代码变得多余。例如,要过滤的字段的排列。我正试图使我的查询通用化,比如这个坏的坏例子。 因此,我可能希望能够显式地声明可以匹配任何值的字段。以下示例在理论上应返回相同的文档

例如:

非显式(正常)
db.user.find({})

显式(怪异)
db.user.find({name:{$ANY}})

或者让它变得更复杂

db.user.find({name: {$ANY}, information: "doctor"});
这是行不通的,但目的是获取所有医生的文档,这些文档在
name
字段中具有任何类型的值,而不仅仅是John的。也许是更复杂的事情

db.user.find({name: function(){
  if(req.query.name)//check if empty
  { return req.query.name; }
  else { return $ANY; }
 }, information: "doctor"});
这将足够通用,可以使用单个查询实例来实现动态请求行为


提前谢谢。

如果您想查找包含
信息的所有文档
='doctor',为什么不直接查询而不查询名称

db.user.find({information: "doctor" });

要获取所有医生文档,但在
name
字段上有ANY排序值,您需要在查询中使用and运算符,因为运算符与包含该字段的文档匹配,包括字段值为null的文档,操作员选择
名称
字段不为null的文档:

db.user.find({"name": { "$exists": true, "$ne": null }, "information": "doctor"});

这就是它不再显式的地方。现在尝试将它从“”(空字符串)推广到任何匹配的字符串,就像它通常所做的那样,都在一个查询中完成。