我需要知道为什么我的聚合查询在测试过程中失败。
书 收藏集如下:
_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
我有种直觉,就是我链接聚合中传递的参数。感谢您的输入,谢谢。