gpt4 book ai didi

.net - MongoDB 设计 - 标签

转载 作者:IT老高 更新时间:2023-10-28 13:35:44 27 4
gpt4 key购买 nike

我是 MongoDB 新手。我有一个关于 MongoDB 性能的设计问题。假设我有两个属性的电影类,名称和导演。我也想标记这个电影类。向此类添加一个新的字符串[] 属性,还是创建一个新类 MovieTags 更好? 我知道我会经常查询这些标签,因为我会在 UI 上使用自动完成功能。对于这个自动完成功能,我只需要标签,而不需要 Movie 对象。什么选择更好?添加字符串 [] 的属性或引用 MovieTag 的集合?考虑性能...当然在这两种情况下都会完成索引。

我应该使用 MapReduce 吗?如果我使用嵌入字符串 [] 对象,仅选择标签,用于自动完成功能?如何?

谢谢!

最佳答案

我可能会使用这样的架构,它将标签存储在字符串数组字段中:

db.movies.insert({
name: "The Godfather",
director: "Francis Ford Coppola",
tags: [ "mafia", "wedding", "violence" ]
})

db.movies.insert({
name: "Pulp Fiction",
director: "Quentin Tarantino",
tags: [ "briefcase", "violence", "gangster" ]
})

db.movies.insert({
name: "Inception",
director: "Christopher Nolan",
tags: [ "dream", "thief", "subconscious" ]
})

对于这种类型的查询,您不需要 map-reduce。通过在电影文档中嵌入标签,您可以利用 MongoDB 的 multikey特征,并使用单个 find() 查找具有给定标签的电影像这样查询:

db.movies.find( { tags: "dream" } )

就像你说的,还值得为多键数组添加索引以提高查询性能:

db.movies.ensureIndex( { tags: 1 } )

关于.net - MongoDB 设计 - 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6074720/

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