根据mongo doc [$match (aggregation)]:
$ match使用一个指定查询条件的文档。查询语法与读取操作查询语法相同。
但是,当我在mongo中执行以下两个查询时,它不起作用。
第一个:
var Q = Activity.find(condition);
Q.exec(function(err, docs) {
console.log(docs);
})
第二,
var Q = Activity.aggregate([ { $match: condition } ]);
Q.exec(function(err, docs) {
console.log(docs);
})
其中
var condition = {
'$or': [
{ 'managers.role': 'monitors', 'managers.item': idMonitors },
{ 'people.role': 'monitors', 'people.item': idMonitors },
{ 'teams.item': myTeams.map(team => team._id) },
{ 'context.space': '', 'context.item': }
]
};
和ActvitySchema:
var ActivitySchema = new Schema({
context: [
{ space: String, item: { type: Schema.Types.ObjectId, refPath: 'contex.space' } }
],
managers: [
{
role: String,
item: { type: Schema.Types.ObjectId, refPath: 'managers.role' }
}
],
people: [
{
item: { type: Schema.Types.ObjectId, refPath: 'persones.rol' },
role: String
}
],
...
});
和idMonitors信息:
console.log(typeof idMonitors);
// OUTPUT: object
console.log(idMonitors);
// OUTPUT: ["5b3bcc5b299d2c62d92179c6"]
我在第一个中得到正确的结果,但在第二个中没有得到。两种结果都应与我了解的文档相同。
有什么可能的建议吗?我希望自己能正确解释。