如果几列是空白或空的,如何提取行

How to get the rows extracted if few columns are blank or empty

我是新手,需要一些帮助来提取 records/row 只有当几列为空白时。下面的代码忽略了空白记录并为我提供了有价值的记录。有人可以在这里提出建议吗?

mongo_docs = mongo.db.user.find({"$and":[{"Param1": {"$ne":None}}, {"Param1": {"$ne": ""}}]})

您使用的查询包含 ne,表示不等于。您可以将其更改为 eq(等于)并检查是否获得了所需的结果。

mongo_docs = mongo.db.user.find({"$or":[{"Param1": {"$eq":None}}, {"Param1": {"$eq": ""}}]})

上述代码的简化也将是:

mongo_docs = mongo.db.user.find({"$or":[{"Param1": {"$eq":None, "$eq": ""}}]})

如果exists query更能满足您的要求,您也可以使用

来自评论:您完全正确,该命令将使用多个参数。

mongo_docs = mongo.db.user.find({"$or":[{"Param1": {"$eq":None, "$eq": ""}}, {"Param2": {"$eq":None, "$eq": ""}},{"Param3": {"$eq":None, "$eq": ""}}]})

另外,如果想在更大范围内进行,可以考虑使用text indexes。这些将允许您一次搜索所有测试字段,相同的代码应如下所示:

mongo.db.user.createIndex({Param1: "text", Param2: "text", Param3: "text"})
mongo.db.user.find({$text: {$search: ""}})

以上仅适用于文本内容,我还没有遇到任何整数值的实现,但不明白为什么使用其他 wildcards.


参考文献:

  1. Search multiple fields for multiple values in MongoDB
  2. https://docs.mongodb.com/manual/text-search/
  3. https://docs.mongodb.com/manual/core/index-text/#std-label-text-index-compound
  4. https://docs.mongodb.com/manual/core/index-wildcard/