我有一个具有todolists字段的用户模型,在todolists字段中,我想通过ID获取特定的待办事项列表。我的查询是这样的:

 User.find({_id: user._id, _creator: user, todoList: todoList._id}, 'todoLists') // how do I query for todoList id here? I used _creator this on populate query.


我也可以像这样在Usermodel字段上进行搜索吗?

User.todoLists.find({todoList: todoList._id})


我还没有进行测试,因为我仍在修改Graphql模式并且是猫鼬的新手,我非常感谢Links和建议。救命?

最佳答案

假设您的模型如下所示:

const todoListSchema = new Schema({
    item: { type: String },
}, { collection: 'todolist' });

const userSchema = new Schema({
    todoList: [todoListSchema],
}, { collection: 'user' });

mongoose.model('user', userSchema);
mongoose.model('todoList', todoListSchema);


现在,您可以通过多种方式执行此操作:

1.使用数组filter()方法
reference

User.findById(_id, (err, user) => {
    const todoList = user.todoList.filter(id => id.equals(tdlId));
    //your code..
})


2.使用猫鼬id()方法
reference

User.findById(_id, (err, user) => {
        const todoList = user.todoList.id(tdlId);
        //your code..
    })


3.使用猫鼬聚合
reference

User.aggregate(
        { $match: { _id: userId} },
        { $unwind: '$todoList' },
        { $match: { todoList: tdlId } },
        { $project: { todoList: 1 } }
    ).then((user, err) => {
         //your code..
        }
    });

关于node.js - 如何在 Mongoose 中嵌套查找?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44208202/

10-10 15:59