MongoDB - 在聚合中使用numericOrdering做mongo slow

时间:2018-06-19 05:15:39

标签: python mongodb pymongo

我有这个问题,当我运行我的查询正常时,一切都工作100%完美,但当我尝试添加numericOrdering时,它不会。

aggregation = [
    {'$match': {'store': 'fourcom', 'closed': 0}}, 
    {'$lookup': {
        'from': 'ordre_open', 
        'localField': 'reference_number', 
        'foreignField': 'order_number', 
        'as': 'ordre_open'
    }}, 
    {'$lookup': {
        'from': 'ordre_backend_open', 
        'localField': 'reference_number', 
        'foreignField': 'ordre-id', 
        'as': 'ordre_backend'
    }}, 
    {'$project': {
        '_id': 1, 
        'store': 1, 
        'order_number': 1, 
        'document_number': 1, 
        'reference_number': 1, 
        'document_date': 1, 
        'invoice_group': 1, 
        'account': 1, 
        'name': 1, 
        'our_ref': 1, 
        'your_ref': 1, 
        'payment': 1, 
        'vat': 1, 
        'total_price': 1, 
        'currency': 1, 
        'department': 1, 
        'closed': 1, 
        'deleted': 1, 
        'arch': 1, 
        'locations': 1, 
        'lines.price': 1, 
        'lines.qty': 1, 
        'ordre_open._id': 1, 
        'ordre_open.order_number': 1, 
        'ordre_open.closed': 1, 
        'ordre_open.deleted': 1, 
        'ordre_open.type': 1, 
        'ordre_open.arch': 1, 
        'ordre_open.fcomputer_synced': 1, 
        'ordre_backend.ordre-id': 1, 
        'ordre_backend.error': 1, 
        'ordre_backend.done': 1, 
        'ordre_backend.cancel': 1
    }}, 
    {'$sort': {'order_number': 1}}, 
    {'$skip': 0}, 
    {'$limit': 1000}
]
mongodb_limit = 1000

resualt = db.command('aggregate', 'ordre_purchase_open', pipeline=aggregation, explain=False, cursor={
                'batchSize': mongodb_limit
            })

但是当我决定像人类一样排序并添加

collation={
    'numericOrdering': True,
    'locale': "da"
}

它完全错了,我的查询失败了,不会像我期望的那样工作。我之前很久都使用过numericOrdering,但这次是db.command中第一次使用aggregate

我希望有人可以解释我在这里做错了什么?

0 个答案:

没有答案