Python Pymongo$in+;在pymongo中不使用正则表达式的聚合
我正在Mongo shell中运行以下查询:Python Pymongo$in+;在pymongo中不使用正则表达式的聚合,python,regex,mongodb-query,aggregation-framework,pymongo,Python,Regex,Mongodb Query,Aggregation Framework,Pymongo,我正在Mongo shell中运行以下查询: db.coll.aggregate([ { "$match" : { "_id":{"$in" : [/^4_.*/,/^3_.*/]}}}, { "$unwind" : "$rp"}, {"$group":{"_id": "$_id", "rp": { "$push": "$rp" }}} , {"$limit":120}],{allowDiskUse:true}) 它工作
db.coll.aggregate([ { "$match" : { "_id":{"$in" : [/^4_.*/,/^3_.*/]}}},
{ "$unwind" : "$rp"},
{"$group":{"_id": "$_id", "rp": { "$push": "$rp" }}} , {"$limit":120}],{allowDiskUse:true})
它工作正常。但当我在pymongo尝试同样的方法时:
ids_list = [3,4]
ids_list = ["^" + str(c_id) + "_.*" for c_id in ids_list]
pipe = [ { "$match" : { "_id":{"$in" : ids_list}}},
{ "$unwind" : "$rp"},
{"$group":{"_id": "$_id", "rp": { "$push": "$rp" }}} , {"$limit":500}]
res = list(db.coll.aggregate(pipeline = pipe,allowDiskUse=True))
这是行不通的。我不熟悉Mongo查询 我更改了for循环,其中每个元素都是使用re模块编译的,即
ids_list = [re.compile("^" + str(c_id) + "_.*") for c_id in ids_list]
它成功了:)