[英]How to join then perform query on mongoose
假設我有 2 個架構
// User
{
name: { type: Types.Name, required: true, index: true }
}
// Book
{
name: { type: Types.String, index: true },
author: { type: Types.Relationship, ref: 'User', index: true }
}
我想在“name”字段和“author.name”字段之間使用 OR 運算符對 Book 模式執行搜索查詢(這意味着如果我輸入“abc”搜索,它將返回名稱包含“abc”或 Books 的任何書籍'作者姓名包括“abc”)。 我怎樣才能做到這一點? 感謝您的幫助,在此先感謝。
P/S: 如果我有
User Collection
_id name
1 Foo
2 Bar
3 XYZ
Book Collection
_id name author
1 BookA 1
2 Foo 2
3 BookC 2
4 BookD 3
因此,當我在 Book Collection 中輸入“Foo”搜索鍵進行查詢時,它將返回:
_id name author
1 BookA 1 (because author 1 name "Foo")
2 Foo 2
以下查詢會有所幫助:
db.Book.aggregate([
{
$lookup: {
from: "User",
localField: "author",
foreignField: "_id",
as: "user"
}
},
{
$unwind: {
path: "$user",
preserveNullAndEmptyArrays: true
}
},
{
$match: {
$expr: {
$or: [
{
$eq: [
"$name",
"Foo" // Replace with your search string.
]
},
{
$eq: [
"$user.name",
"Foo" // Replace with your search string.
]
}
]
}
}
},
{
$project: {
name: 1,
author: 1
}
}
])
注意:以上查詢是在純 Mongo 中,您可以輕松地將其轉換為您需要的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.