MongoDB:排除以典型字符串开头的字段

时间:2018-03-22 10:51:13

标签: python mongodb pymongo

我的数据集看起来像这样:

{
"A_asdsd" : "1",
"A_fghf" : "1",
"B_tzzz" : "1",
"B_ghh" : "1",.... }

如何指定我的find()函数,排除以A_开头的所有字段? (其中有数千种)。

3 个答案:

答案 0 :(得分:0)

您无法根据字段的名称进行查询,只能查看其值。

答案 1 :(得分:0)

您可以在3.4中使用以下聚合。

使用$$ROOT为文档创建一个键值数组。

$objectToArray $filter来过滤密钥,$arrayToObject来创建文档结构。

$replaceRoot将文档推广到顶部。

 db.col.aggregate([
 {"$replaceRoot":{"newRoot":
  {"$arrayToObject":{
   "$filter":{
    "input":{"$objectToArray":"$$ROOT"},
    "cond":{"$not":{"$eq":[{"$substrBytes":["$$this.k", 0, 2]}, "A_"]}}
     }
   }}
}}])

答案 2 :(得分:0)

感谢大家的建议。

因为无论如何我都使用python中的数据,我现在的解决方案是在数据框中导入数据。使用以下代码行,我可以排除字段:

df.loc[:, ~df.columns.str.startswith('A_')]

df是我的数据框