如何在Pymongo中编写涉及正则表达式的原始MongoDB命令

时间:2017-12-07 14:14:00

标签: python mongodb pymongo

在mongo shell中,我可以执行此命令:

db.getSiblingDB('myDatabase')
.myCollection
.find({ 
    city_id:{$ne:123}, 
    company: {$not: new RegExp('^acme.*', 'i')}
})
.forEach(function (item) {
    var x = db.myCollection.findOne({
        city_id:123, 
        company:'abc123'
    });
    item.address = x.address;
    item.phone = x.phone;

    db.myCollection.deleteOne({_id: item._id});
    db.myCollection.insert(item);
});

如何在pymongo或任何其他mongodb python驱动程序中编写?

2 个答案:

答案 0 :(得分:0)

使用pyMongo,您可以执行类似

的操作
for item in db.myDatabase.myCollection.find({ 
    city_id:{$ne:123}, 
    company: {$not: new RegExp('^acme.*', 'i')}
}):
   //Do what you are doing in ForEach fucntion

您可以在PyMongo中引用insertremove

答案 1 :(得分:0)

根据@AnirudhBagri的建议,以下是有效的:

x = db.myCollection.find_one({city_id:123, company:'abc123'})
for item in db.myCollection.find({"$and": [{"city_id": {'$ne':123}}, {"company": {'$not': re.compile('^acme.*')}}]}):
    item.address = x.address
    item.phone = x.phone
    db.myCollection.delete_one({"_id": item._id});
    db.myCollection.insert(item)