【发布时间】:2016-03-24 15:18:25
【问题描述】:
在下面的示例中,如何找到特定成员 ID 具有 Membership(子文档)的 Account(父)文档?我尝试过同时使用$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
});
【问题讨论】:
-
发生了什么/没有发生什么让您认为这不起作用?从这里看起来是正确的。
标签: node.js mongodb mongoose mongoose-schema