MongoDB-基于一个非常嵌套的属性查找父对象

时间:2019-02-28 00:45:39

标签: javascript mongodb

我有一个由帖子组成的收藏集。这些帖子对象内部是有关该帖子的属性,其中之一是与该帖子关联的一组标记。标签数组中有更多对象,每个对象都是带有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
}

当然,我在此收藏集中还有其他post对象,其中一些对象可能具有不同的标签。如何获得所有带有食物标签的帖子?

1 个答案:

答案 0 :(得分:1)

基本的find查询将在这里完成工作。这是它的样子

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