Mongoose如何找到具体的价值

时间:2017-11-26 21:58:47

标签: node.js angular mongoose

经过大量阅读后,我被困住了。 我在这里发布的代码是我试图创建的商店数据库的实现。 在每家商店,我们都有一些领域。我有兴趣使用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
}

我希望后端根据查询返回过滤的项目。

问题是,我无法获得CORRECT查询。

非常感谢您的帮助,

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你就是这样做的:

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回来的对象必须匹配从前端给出的所有四个标准。