【问题标题】:MongoDB - Finding the parent object based on a very nested propertyMongoDB - 基于非常嵌套的属性查找父对象
【发布时间】:2019-02-28 09:35:01
【问题描述】:

我有一个包含帖子的集合。在这些帖子对象内部是关于帖子的属性,其中一个是与帖子关联的标签数组。标签数组内部是更多对象,每个对象都是具有 name 属性的标签。我想根据标签的名称取回这个集合中包含给定标签的所有帖子。

以下是集合中的 post 对象示例:

{
    "_id" : ObjectId("5c6a0478cba09c148b497fc6"),
    "tags" : [
        {
            "_id" : "5c69d974e05511106048780e",
            "name" : "Food",
            "text_color" : "#ffffff",
            "bg_color" : "#02569b",
            "createdAt" : "2019-02-17T22:00:20.143Z",
            "updatedAt" : "2019-02-17T22:00:20.143Z",
            "__v" : 0
        },
        {
            "_id" : "5c69d95de05511106048780d",
            "name" : "Drinks",
            "text_color" : "#ffffff",
            "bg_color" : "#0175c2",
            "createdAt" : "2019-02-17T21:59:57.758Z",
            "updatedAt" : "2019-02-17T21:59:57.758Z",
            "__v" : 0
        }
    ],
    "title" : "Title of the post",
    "body" : "body of the post",
    "author_id" : ObjectId("5c5e0d3b647f12e949cbea1e"),
    "author_name" : "garrett",
    "likes_count" : 1,
    "createdAt" : ISODate("2019-02-18T01:03:52.497Z"),
    "updatedAt" : ISODate("2019-02-28T00:25:21.969Z"),
    "__v" : 0,
    "dislikes_count" : 0
}

当然我在这个集合中还有其他的帖子对象,其中一些可能有不同的标签。我怎样才能让所有带有食物标签的帖子都被退回?

【问题讨论】:

    标签: javascript mongodb


    【解决方案1】:

    一个基本的find 查询将在这里完成这项工作。这是它的外观

    const tagName = 'food;
    db.posts.find({ 'tags.name': tagName }).then(console.log);
    

    【讨论】:

    • 这行得通,我真的认为这会更复杂。没有意识到您可以在查询中使用类似的点表示法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2021-03-05
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多