第一个mongodb项目,所以它可能是显而易见的,但是我的google fu还不够,或者我接近它错了。
我在mongodb有一个集合。每个文档都有一个唯一的id
字段。在我的程序中,我最终得到了这些ID的列表,如果我没有在mongodb中获得相应文档的副本,我想对api进行一次缓慢昂贵的调用。
显然,如果我不必这么做,我就不想拨打昂贵的电话,所以解决方案似乎需要检索完整列表并进行比较:
ids = [45, 23, 45, 88, 34, 28] # Except many more
items = db.items.find({'id': {'$in': ids}}, {'id':1})
missingIds = compareFx(ids, items)
for missingId in missingIds:
doc = expensiveCall(missingId)
db.items.insert_one(doc)
当我只是寻找那些不存在的文件时,这要求我完整检索所有现有/匹配的文件。有一个$exists
运算符,但它似乎只在字段而不是文档上运行,但也许我只是不知道如何使用它。
是否有某种运算符/运算符组合可以找回找不到的ID,或者这是正确/最好的方法吗?