gpt4 book ai didi

mongodb - 列出存储在 MongoDB 中的博客文章的相关标签

转载 作者:可可西里 更新时间:2023-11-01 09:16:03 25 4
gpt4 key购买 nike

我想弄清楚如何从存储在 MongoDB 中的博客文章中获取相关标签列表。

数据结构

{
title: "Post #1",
tags: { "news", "politics" }
},
{
title: "Post #2",
tags: { "news", "entertainment" }
},
{
title: "Post #3",
tags: { "entertainment", "music", "theatre" }
},
{
title: "Post #4",
tags: { "entertainment", "music", "concerts" }
}

期望的结果

如果我想获得与“娱乐”相关的标签列表,它会查询帖子以找到相似的标签。当帖子被标记为“娱乐”时,也会使用类似的标签。

我希望能够得到以下结果:

Tag       Count
======== ======
music 2 (because there are 2 posts tagged with music + entertainment)
concert 1
theatre 1
news 1

有没有办法让它尽可能接近那个?我能得到的最接近的方法是使用 db.posts.find({tags: "entertainment"}); 然后循环遍历并在 MongoDb 之外构造这些值。我正在寻找更有效的方法。

最佳答案

您可以将工作推送到写入端以保持快速读取。假设您正在尝试将 new_tag 添加到已有 some_list_of_tags 的帖子中。以下代码将构建具有所需值的集合:

for old_tag in some_list_of_tags:
db.related_tags.update({'_id':new_tag}, {'$inc':{'counts.'+old_tag:1}}, upsert=True)
db.related_tags.update({'_id':old_tag}, {'$inc':{'counts.'+new_tag:1}}, upsert=True)

然后要获得“娱乐”的结果,只需执行以下操作:

db.related_tags.find({'_id': 'entertainment'})

您可以使用 findAndModify命令以原子方式将标签添加到帖子并获取所有现有标签:

old_tags = db.posts.findAndModify({query: {_id: ID},
update: {$addToSet: {tags: new_tag}},
fields: {tags: 1}
})['tags']

关于mongodb - 列出存储在 MongoDB 中的博客文章的相关标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com