我試圖通過比較另一個陣列中的值來匹配,如果第一個陣列中的任何一個值與第二個陣列的任何一個值匹配,則回傳它。我有一個這樣的用戶個人資料
{
"user": "bob"
"hobbies": [jogging]
},
{
"user": "bill"
"hobbies": [reading, drawing]
},
{
"user": "thomas"
"hobbies": [reading, cooking]
}
{
"user": "susan"
"hobbies": [coding, piano]
}
例如,我的貓鼬搜索查詢是這個陣列 [編碼、閱讀](但可以包括任何愛好值),我希望將其作為輸出:
{
"user": "bill"
"hobbies": [reading, drawing]
},
{
"user": "thomas"
"hobbies": [reading, cooking]
}
{
"user": "susan"
"hobbies": [coding, piano]
}
我試過:
{"$match": {"$expr": {"$in": [searchArray.toString(), "$hobbies"]}}}
但這只有在搜索陣列中只有一個值時才有效。
uj5u.com熱心網友回復:
const searchArray = ["reading", "coding"];
const orArray = searchArray.map((seachValue) => {
return {
hobies: searchValue,
}
});
collection.aggregate([{
$match: { $or: orArray }
}])
查詢:
db.collection.aggregate([
{
$match: {
"$or": [
{
hobbies: "reading"
},
{
hobbies: "coding"
}
]
}
}
])
或者您可以使用另一種方式,無需處理 arr:
db.collection.aggregate([
{
$match: {
hobbies: {
$in: [
"reading",
"coding"
]
}
}
}
])
跑到這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/335959.html
