返回大于mongoose中给定值的数组的所有元素

时间:2016-11-24 04:25:36

标签: mongodb mongoose

我有一个Content架构。它有coursecontent字段。 content字段有2个子字段content1content2,两者都是ObjectIds的数组。我想要从ObjectIds中检索所有content1,这些ObjectId是在给定的ObjectId之后创建的(大于给定的ObjectId)。

问题在于我的代码,我只收到一个ObjectIds,但我想检索大于givenId的所有var CurrentContentSchema = new mongoose.Schema({ "course" : Number, "content" : { "content1" : [ { type : mongoose.Schema.Types.ObjectId, ref : 'First' } ], "content2" : [ { type : mongoose.Schema.Types.ObjectId, ref : 'Second' } ] } });

我的架构是:

CurrentContent.find({
        'course' : givenCourse,
        'content.content1' : { $gt : givenId} 
    },{
        'course' :1,
        'content.content1.$' : 1
    }).
        exec(function(err,contents) {...
});

我的代码是:

    if (self.detailTextLabel.superview == nil) {
        [self setNeedsLayout];
    }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果find中任何一个数组元素匹配,

content1将匹配文档。它匹配后不会再看了。因此,您只能在$中获得一个值。

您可以尝试使用此聚合管道(未运行它)

[
    {
        $match: {
        'course' : givenCourse,
        'content.content1' : { $gt : givenId} 
        }
    },
    {$unwind: 'content.content1'},
    {
        $match: {
        'course' : givenCourse,
        'content.content1' : { $gt : givenId} 
        }
    },
    {$project: {
        course: 1,
        content1: '$content.content1'
    }}
]