我有一个Content
架构。它有course
和content
字段。 content
字段有2个子字段content1
和content2
,两者都是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];
}
非常感谢任何帮助。
答案 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'
}}
]