私は次のように pymongo で同等の SQL Join を実行しようとしています: http://blog.knoldus.com/2013/02/03/joins-now-possible-in-mongodb/
問題は、bson がコレクション オブジェクトをエンコードできないため、行き詰まっていることです。
bson.errors.InvalidDocument: Cannot encode object: Collection(Database(MongoClient('localhost', 27017), 'Application'), 'Products')
関連するすべてのコード:
class Delivery(Repository):
COLLECTION_ATTRIBUTE = 'deliveriesCollection'
def __init__(self):
Repository.__init__(self, self.COLLECTION_ATTRIBUTE)
def printTable(self):
from bson.code import Code
mapper = Code('function() {'
' product = ProductCollection.findOne({_id:this.Product_ID});'
' data = {'
' \'Name\':this.Name,'
' \'Product_ID\': product.ID'
' };'
' emit(this._id, data );'
'}', ProductCollection = product.collection)
reducer = Code('function(key, values) {'
' return values[0];'
'}')
result = self.collection.map_reduce(mapper, reducer, "myresults")
for doc in result.find():
print(doc)
delivery = Delivery()
product = Product()