2
考慮以下貓鼬模式:如何從兩個條件的子文檔數組中選擇一個元素?
new mongoose.Schema({
attributes: [{
key: { type: String, required: true },
references: [{
value: { type: String, required: true },
reference: { type: mongoose.Schema.Types.ObjectId, required: true }
}]
}
});
遵循這個模式應該是這樣的文件:
{
attributes: [
{
key: 'age', references: [{ value: '35', reference: 298387adef... }]
},
{
key: 'name', references: [{
value: 'Joe', reference: 13564afde...,
value: 'Joey', reference: 545675cdab...,
}
...
]
}
我想選擇根據以下條件屬性: - 關鍵例如name
,例如 - 具有密鑰name
的屬性具有至少一個參考,其值爲Joe
。
理想情況下,我想和這些條件中的許多條件鏈接。例如,{'name': 'Joe'}
和{'age': '35'}
。
我似乎無法找到一種做這種貓鼬的方法。我已經試過以下貓鼬查詢,而無需任何的好成績(它讓無論是假陽性或假陰性):
// First query
query.where('attributes.key', attribute.key);
query.where('attributes.references.value', attribute.value);
// Second
query.and([{ 'attributes.key': attribute.key }, { 'attributes.$.references.value': attribute.value }]);
// Third
query.where('attributes', { 'key': attribute.key, 'references.value': { $in: [attribute.value] }});
那我怎麼辦呢?
謝謝!有用。我還沒有理解$ elemMatch實際上是如何工作的。你拯救我的一天:) – Janitrix