0
你好我有以下的集合,它最初有一個空值pymongo插入一條記錄,如果不存在
{
"_id" : ObjectId("542abfe4a14c971c36c96ee3"),
"values" : [],
"name" : {
"en-UK" : "Size"
}
}
在我的代碼,我想測試,如果值存在,如果不把它添加到收集,這裏是我的代碼至今:
def get_attribute_size(size_code, size_name):
attribute_size_meta = db.attributes.aggregate([{ '$match': {'name.en-UK': 'Size'} },
{ '$unwind' : '$values' },
{ '$project': { 'code' : '$values.code', 'name' : '$values.name', 'valueId': '$values._id'} },
{ '$match': {
'$and': [
{'name.en-UK': str(size_name)},
{'code': int(size_code)}
]
}
}])
return attribute_size_meta['result']
def insert_missing_size(size_id, missing_size):
attributes.update({ "_id" : size_id,},
{ "$addToSet":
{ "values" : missing_size }
})
在我的missing_size是這樣的:
{'code': u'3', 'name': {'en-UK': 'M'}, '_id': ObjectId('542ac47ba14c971c9b63353d')}
{'code': u'1', 'name': {'en-UK': '6 MTHS'}, '_id': ObjectId('542ac47ba14c971c9b633535')}
...
和產生它的代碼是:
size_code_id = get_attribute_size(size_code, size_name)
mong_id = get_mongo_size_id()
# if size_code_id returns an empty list, i want to create the entry
if size_code_id == []:
mongo_size = {
"code" : size_code,
"_id" : ObjectId(),
"name" : {"en-UK" : size_name}
}
insert_missing_size(mongo_size, mongo_size)
的insert_missing_size
似乎沒有正常工作,任何意見大加讚賞