首页 > 解决方案 > 如何过滤 SchemaTypes 的 Mongoose 数组

问题描述

我有两个 Mongoose 集合“文件”和“文件共享”。架构详细信息如下

var FileSchema = new mongoose.Schema({
name: { type: String},
shares: [ { type: Schema.Types.ObjectId, ref: "FileShare" } ]});


var FileShareSchema = new mongoose.Schema({
_id: Number,
user: { type: String }});

文件收集的样本数据

name                    shares   
================================
 Document1.txt          [1,2]
 Document2.txt          [1]
 Document3.txt          [2]
 Document4.txt          []

FileShare 集合的示例数据

_id     user
========================
1       John
2       Raj

我想编写一个查询来获取与用户共享的列表文件。并且还需要使用查询来处理分页。

预期结果

对于用户 John 应该得到 Document1.txt,Document2.txt
而用户 Raj 应该得到 Document1.txt,Document3.txt

File.find({})
    .populate('FileShare')
    .sort({'_id': 1})   
    .skip(0).limit(25)
    .exec(function (err, files) {
        res.send(files);
    });

请让我知道是否有任何方法可以使用 mongoose 查询获得此结果。

标签: node.jsmongodbmongoose

解决方案


推荐阅读