在下面的示例中,如何找到Account
特定成员 ID 具有Membership
(子文档)的(父)文档?我尝试过同时使用$elemMatch
和直接查询对象。
注意:两种模式都有一个已删除的标志字段 ( dd
)。如果设置了此字段,则记录已被删除且不应返回:
var mongoose = require('mongoose')
var membershipSchema = new mongoose.Schema({
m : { type: mongoose.Schema.ObjectId, ref: 'member' }, // Member
b : { type: Date, required: true }, // Begin Date
e : { type: Date }, // End Date
dd : { type: Date }, // Deleted Date
dm : { type: mongoose.Schema.ObjectId, ref: 'member' } // Deleted By Member
});
var accountSchema = new mongoose.Schema({
n : { type: String, trim: true }, // Display Name
m : [ membershipSchema ], // Membership List
dd : { type: Date }, // Deleted Date
dm : { type: mongoose.Schema.ObjectId, ref: 'member' } // Deleted By Member
});
var accountModel = mongoose.model('account', accountSchema);
module.exports = accountModel;
我想退回所有Account
文件,无论是否包含Membership
子文件。但是,我将不知道Account
何时执行查询。
这就是我正在尝试的:
var query = {
m : {
$elemMatch: {
m : req.appData.member.id,
dd : { $exists: false }
}
},
dd : { $exists: false }
};
Account.find(query, function (err, accounts) {
// Do something
});