经过大量阅读后,我陷入了困境。
我在此处发布的代码是我要制作的商店数据库的实现。
在每个商店中,我们都有一些字段。我对使用items数组(包含JSON变量)感兴趣。
我想通过三个过滤器过滤商品,首先通过商店ID过滤,其次通过类别ID过滤,最后一个过滤器将是半类别ID。
我想从前端发送数据,这意味着我提供了STOREID
,CategoryID
和SemiCategoryID
。
在后端接收到数据之后,我期望根据前端提供的数据仅接收相关项目。
{
"_id": {
"$oid": "5a1844b5685cb50a38adf5bb" --> **ID of the STORE**
},
"name": "ACE",
"user_id": "59e4c41105d1f6227c1771ea",
"imageURL": "none",
"rating": 5,
"items": [
{
"name": "NirCohen",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a1958181cd8a208882a80f9"
}
},
{
"name": "he",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a1973c40e561e08b8aaf2b2"
}
},
{
"name": "a",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a197439bc1310314c4c583b"
}
},
{
"name": "aaa",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a197474558a921bb043317b"
}
},
],
"__v": 9
}
我希望后端根据查询返回过滤的项目。
问题是,我无法获得正确的查询。
非常感谢您的帮助,
先感谢您。
最佳答案
如果我对您的理解正确,那么您正在执行以下操作:
Store.find({}).then(..);
如果只想查找categoryID等于变量myCategory的商店,则可以使用以下方法将其过滤掉:
Store.find({semiCatID: myCategory}).then(..);
如果这不是您想要的,请让我知道,然后我们可以继续尝试一起解决这个问题。
编辑:所以您要从前端发送变量
StoreID
,CategoryID
和SemiCategoryID
。在后端接收它们,并想要过滤匹配所有三个字段的数据库集合?如果是的话..那么我认为您要做的就是更改当前查询:
store.findOne({ _id: req.body.userID }, (err, store) => { console.log(store); });
像这样:
store.findOne({
_id: req.body.userID,
storeID: req.body.StoreID,
categoryID: req.body.CategoryID,
semiCategoryID: req.body.SemiCategoryID
}, (err, store) => { console.log(store); });
这样,您从mongo取回的对象必须与前端给出的所有四个条件匹配。
关于node.js - Mongoose 如何找到特定的值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47501445/