Предположим, у вас есть следующие документы в моей коллекции:
{
"_id":ObjectId("562e7c594c12942f08fe4192"),
"name": "Asset1"
"shapes":[
{
"_id": "5cf10fea4cb6352abcfe094b",
"shape":"square",
"color":"blue"
},
{
"_id": "5cf10fea4cb6352abcfe094c",
"shape":"circle",
"color":"red"
}
]
},
{
"_id":ObjectId("562e7c594c12942f08fe4193"),
"name": "Asset2"
"shapes":[
{
"_id": "5c7524f76792cf28f80793e3"
"shape":"square",
"color":"black"
},
{
"_id": "5c7524f76792cf28f80793e4"
"shape":"circle",
"color":"green"
}
]
}
}
У меня нет проблем с поиском определенного цвета, как этот, и он работает
Test.find(
{"shapes.color": "red"},
//Match the exact color
{
products: {
$elemMatch: { color: "red" }
}
}
)
Основная проблема в том, что я хочу добавить этот актив1 и взять только красный цвет, а не весь массив, сославшись на ObjectId("562e7c594c12942f08fe4192")
в коллекции test2. Как мне это сделать, используя Mongoose?
Это схема Test2, на которую я ссылался
const Test2Schema = new Schema({
anothername: String,
test1Shape: {
type: mongoose.Schema.Types.ObjectId,
ref: "Test"
},
});