0
我想基於子文檔數組值獲取集合中的所有文檔。這就是我正在尋找在收集我的數據結構:基於嵌套的subdoc數組值獲取文檔
{
_id: ObjectId('...'),
name: "my event",
members:
[
{
_id: ObjectId('...'),
name: "family",
users: [ObjectId('...'),ObjectId('...'),ObjectId('...')]
},
{
_id: ObjectId('...'),
name: "work",
users: [ObjectId('...'),ObjectId('...'),ObjectId('...')]
}
]
}
我應該指出的是,這些對象的架構中,像這樣定義:
活動:
{
name: { type: String },
members: {type: [{ type: ObjectId, ref: 'MemberGroup' }], default:[] }
}
MemberGroup:
{
name: { type: String },
users: [{type: mongoose.Schema.Types.ObjectId, ref: 'User'}]
}
當然,用戶只是一個帶id的任意對象。
我想要獲取的內容:我想檢索所有在其member.users字段中具有特定用戶標識的事件。
我不知道,如果它的事件可能在一個單一的呼叫,但這裏是我已經試過:
var userId = new mongoose.Schema.ObjectId('57d9503ef10d5ffc08d6b8cc');
events.find({members: { $elemMatch : { users: { $in: [userId]} } }})
這句法工作,但不會返回任何元素,即使我知道有匹配的元素(使用robomongo以可視化的DB)
語法錯誤 - 4個左捲曲和5個右捲曲(也缺少右右括號)。我修正了語法,它的工作原理是:db.events.find({members:{$ elemMatch:{users:{$ in:[userId]}}}})' – TomG
@Tom nope,這只是一個複製粘貼錯字 –
我明白,但正如我所說,當我運行此查詢它的作品。所以我想你會忘記別的東西... – TomG