如何在mongodb中对数据进行排序 - 最佳实践

时间:2018-01-11 09:42:39

标签: node.js mongodb express

我是使用MongoDB的新手。 在我的应用程序中,用户可以创建待办事项列表。我使用带有express框架和mongoose(带有ReactJS前端)的node.js将这些待办事项列表的数据保存到我的数据库中,但是,用户应该能够创建多个待办事项列表和我不确定如何最好地对这些列表的数据进行排序,这样我就可以随时访问相应的待办事项列表中的正确数据。

假设我有这个架构:

var TodoSchema = new mongoose.Schema({
    task: String,
    prio: String,
    updated_at: { type: Date, default: Date.now },
});

module.exports = mongoose.model("Todo", TodoSchema);

我的数据库名为tododb。 我第一次计划为每个新列表创建一个新集合,但在这个问题(how to create a new collection automatically in mongodb)中,它表示为所有列表创建一个集合会好得多,但是,我不确定如何在这种情况下,你会过滤掉正确的数据。

我想我不是第一个遇到这个问题的人,所以通常如何做?除了收藏品,我还有哪些其他选择?我如何准确访问我需要的数据?

编辑:我还在考虑添加一个名为“name”的元素或类似的东西,用户可以在其中输入列表的名称,在获取数据时,我会遍历所有数据并过滤掉一次然而,名称匹配似乎非常低效。

1 个答案:

答案 0 :(得分:1)

我会像下面这样建模一个待办事项列表:

{
     "_id": "id of the todo list",
     "name": "name of the todo list (e.g. daily tasks)",
     "tasks" : [
         {"name": "drink coffee", priority: 1,  updated: "sometime" },
         {"name": "write code", priority: 2,  updated: "sometime" },
         {"name": "drink tea", priority: 3,  updated: "sometime" }
     ]
}

然后将它们全部放在同一个集合中,如果需要按用户分割,只需在待办事项列表文档中添加userId字段。