使用Custom Types in PyMongo,能够插入记录。我的自定义对象有5个字段。我需要一个find_one方法,它根据我的自定义对象中填充的字段进行搜索。假设我创建了一个自定义对象,并且只填充了2个字段(尽管是唯一值)。我需要使用这个对象和操纵器搜索MongoDB。我该如何实现这一目标?上面链接中提到的示例使用不带任何参数的find_one()。
我在下面试过,但没有返回数据
self.my_collection.find_one({'custom': custom})
#Of course I could specify the complete query. Below fetched the data.
self.my_collection.find_one({'custom.prop1': custom.prop1,'custom.prop2': custom.prop2})
截至目前,我已经在下面努力实现同样的目标:
def get_one_by_specified_properties(self, custom):
query_str_map = dict()
for attr in custom_object_properties_names_as_list():
if custom.__getattribute__(attr):
query_str_map.update({'custom.' + attr: custom.__getattribute__(attr)})
document = self.my_collection.find_one(query_str_map)
return document['custom'] if document else None