【发布时间】:2020-09-26 07:16:20
【问题描述】:
这样的结构://(简化的id)
用户:
{_id : ObjectId("4"), name: "Max Sampleman"}
{_id : ObjectId("5"), name: "Jon Doe"}
书籍:
{_id : ObjectId("1"), title: "MongoDB Overview", "likes": 3, contributor: ObjectId("5") }
{_id : ObjectId("2"), title: "NoSQL Overview", "likes": 2, contributor: ObjectId("4")}
{_id : ObjectId("3"), title: "Tutorials Point Overview", "likes": 6, contributor: ObjectId("5")}
现在我正在寻找一种方法来查找书籍,sort 按赞,但首先返回来自用户 4 的书籍。
这样的方法似乎行不通:
user4 = await User.findById(4)
books.find({}).sort({contributor: user4.id, likes: -1})
它返回一个错误,说:
"message": "无效排序值:{ 贡献者:4 }"
有没有办法实现这种排序?
【问题讨论】:
-
您可以在单个查询中完成。
books.find({contributor:user4.id}, null, {sort: {likes: -1}}).then().catch()确保 user4.id 不为 ObjectID 类型的空值。
标签: javascript node.js mongodb sorting mongoose