经过大量阅读后,我陷入了困境。
我在此处发布的代码是我要制作的商店数据库的实现。
在每个商店中,我们都有一些字段。我对使用items数组(包含JSON变量)感兴趣。
我想通过三个过滤器过滤商品,首先通过商店ID过滤,其次通过类别ID过滤,最后一个过滤器将是半类别ID。

我想从前端发送数据,这意味着我提供了STOREIDCategoryIDSemiCategoryID
在后端接收到数据之后,我期望根据前端提供的数据仅接收相关项目。

{
    "_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(..);


如果这不是您想要的,请让我知道,然后我们可以继续尝试一起解决这个问题。

编辑:所以您要从前端发送变量StoreIDCategoryIDSemiCategoryID。在后端接收它们,并想要过滤匹配所有三个字段的数据库集合?
如果是的话..那么我认为您要做的就是更改当前查询:

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/

10-13 01:43