【发布时间】:2020-02-26 14:51:03
【问题描述】:
我目前正在开发一个使用 Mongoose 查询的 NodeJS 项目。
出现了一个新要求,我无法理解如何解决。我想获取一个查询字符串并在我的数据库的所有集合中搜索它以返回与该值匹配的对象。
这就是我的收藏的样子:
书籍:
{
"book_id": "ab12nld”,
"book_version": "0”,
"author": “Sam”,
“name”: “Sample Book”,
“comments”: “Done”
},
{
"book_id": "a5g2nld”,
"book_version": "1",
"author": "Martin",
"name": "Sample Book",
“comments”: “In Progress”
}
汽车:
{
"car_id": "nlp240n”,
"car_model": "3”,
"brand": “Hyundai”,
“name”: “Verna”,
“color”: “Blue”
},
{
"car_id": "cak201n”,
"car_model": "1”,
"brand": “Tata”,
“name”: “Indica”,
“color”: “Black”
}
电话:
{
"phone_id": "n0830bo”,
"brand": “OnePlus”,
“name”: “7 Pro”,
“color”: “Red”
},
{
"phone_id": "bh97b01”,
"brand": “IPhone”,
“name”: “11 Pro”,
“color”: “Black”
}
我会得到一个query_string,它将在这个集合中搜索,如果有匹配的结果,我应该得到所有相关的值。
例子:
如果query_string 是Martin,我应该从Books 集合中得到相应的结果,因为Martin 只存在于那里:
{
"book_id": "a5g2nld”,
"book_version": "1",
"author": "Martin",
"name": "Sample Book",
“comments”: “In Progress”
}
如果query_string 是Black,我应该从 Cars 和 Phones 集合中得到相应的结果,因为它们的值都是 Black:
{
"car_id": "cak201n”,
"car_model": "1”,
"brand": “Tata”,
“name”: “Indica”,
“color”: “Black”
},
{
"phone_id": "bh97b01”,
"brand": “IPhone”,
“name”: “11 Pro”,
“color”: “Black”
}
这似乎很棘手,我不知道如何继续。任何帮助将不胜感激。
【问题讨论】:
-
在 mongodb 中尝试
$lookup.-docs.mongodb.com/manual/reference/operator/aggregation/lookup -
@Shubh
$lookup要求两个集合中有一个“加入”字段。在这种情况下,没有这样的字段,所以,$lookup可能不起作用。
标签: mongodb search mongoose mongodb-query mongoose-schema