我有一个由帖子组成的收藏集。这些帖子对象内部是有关该帖子的属性,其中之一是与该帖子关联的一组标记。标签数组中有更多对象,每个对象都是带有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对象,其中一些对象可能具有不同的标签。如何获得所有带有食物标签的帖子?
答案 0 :(得分:1)
基本的find
查询将在这里完成工作。这是它的样子
const tagName = 'food;
db.posts.find({ 'tags.name': tagName }).then(console.log);