tôi cố gắng để chạy một lệnh tổng hợp:"Một đối tượng đường ống giai đoạn đặc tả phải chứa chính xác một trường" khi sử dụng OrderedDict
request = collections.OrderedDict([
("$unwind", "$tags"),
("$group", { "_id" : "$tags" , "count" : { "$sum" : 1 } }),
("$project", { "_id" : 0, "tag" : "$_id" , "count" : 1 }),
("$sort", { "count" : -1 }),
("$limit", 3)])
print client.devoxx.talks.aggregate(request)
Nhưng MongoDB từ chối yêu cầu:
pymongo.errors.OperationFailure: command SON([('aggregate', u'talks'), ('pipeline', [OrderedDict([('$unwind', '$tags'), ('$group', {'count': {'$sum': 1}, '_id': '$tags'}), ('$project', {'count': 1, '_id': 0, 'tag': '$_id'}), ('$sort', {'count': -1}), ('$limit', 3)])])]) failed: exception: A pipeline stage specification object must contain exactly one field.
Dường như với tôi rằng Tôi có từng giai đoạn tổng hợp trong một mục của lệnh dict.
Nếu bạn có thể tái tạo điều này mà không sử dụng pymongo, nó sẽ rõ ràng hơn và bạn có thể loại bỏ thẻ python có thể không liên quan. –
@ErikAllik Tôi cũng nói rằng thẻ không hợp lệ và bị xóa. Và tuyên bố là không cần thiết vì một Dict không được đặt hàng không phải là một đối số hợp lệ cho phương thức được gọi. –