我的数据集看起来像这样:
{
"A_asdsd" : "1",
"A_fghf" : "1",
"B_tzzz" : "1",
"B_ghh" : "1",.... }
如何指定我的find()函数,排除以A_开头的所有字段? (其中有数千种)。
答案 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是我的数据框