在python中排序和加入mongodb集合

时间:2019-01-20 07:48:17

标签: mongodb pymongo

我需要知道为什么我的聚合查询在测试过程中失败。

收藏集如下:

_id: 573a13a6f29313caabd17bd5
title: "TinTin And the Picaros"

评论 集合如下所示,

_id: 5a9427648b0beebeb69579cc
name :"Andrea Le"
email :"andrea_le@fakegmail.com"
book_id : 573a1390f29313caabcd418c
text: "Rem officiis eaque repellendus amet eos doloribus. Porro dolor volupta..."
date: 2012-03-26 23:20:16.000

一本书可能有多个评论。注释集合中的book_id字段和books集合中的_id字段将两者链接在一起。

我需要检索评论并按日期排序。我想出的集合是在函数get_book中,

def get_book(id):
 books = db.books.aggregate([
            {
                '$lookup': {
                    'from': 'comments',
                    'let': {
                        'book_id': id
                    },
                    'pipeline': [
                        {
                            '$match': {
                                '$expr': {
                                    '$eq': [
                                        '$book_id', '$$book_id'
                                    ]
                                }
                            }
                        }, {
                            '$sort': {
                                'date': -1
                            }
                        }
                    ],
                    'as': 'comments'
                }}]).next()

        return books

测试功能如下

def test_fetch_comments_for_book(client):
    book_id = "573a13a6f29313caabd17bd5"
    result = get_book(book_id)
    assert len(result.get('comments', [])) == 2

测试失败并显示错误

 AssertionError: assert 0 == 2

我有种直觉,就是我链接聚合中传递的参数。感谢您的输入,谢谢。

0 个答案:

没有答案