假设我想维护每个用户的项目列表(在 Node.js 环境中使用 Mongoose ODM 的 MongoDB 中),然后查询项目是否归用户所有。例如,我想存储每个用户喜欢的所有颜色,然后查看特定颜色是否属于特定用户。在我看来,最好将颜色存储为用户文档中的嵌入对象,而不是用户文档中的数组。原因是检查对象中是否存在颜色似乎更有效,因为我可以检查对象属性是否存在:
if(user.colors.yellow){
//true case
} else {
//false case
}
与我必须遍历整个数组以查看颜色是否存在于数组中某处的数组相比:
for (var i = 0; i < user.colors.length; i++) {
if(user.colors[i] === "yellow"){
//true case
} else {
//false case
}
}
但是,从我在网上看到的许多示例中,似乎使用数组来处理这种类型的事情相当普遍。我错过了什么吗?有什么优点/缺点,最好的方法是这样做的?