У меня есть эта мангуста модель:Получить документ только суб документов сопрягать критерии с мангуста
var mySubEntitySchema = new Schema({
property1: String,
property2: String
});
var myEntitySchema = new Schema({
name: String,
sub: [mySubEntitySchema]
});
export var MyEntityModel: mongoose.Model<MyEntityDocument> = mongoose.model<MyEntityDocument>("MyEntity", myEntitySchema);
Теперь я хочу, чтобы получить конкретный MyEntityDocument, для которого я имею _id, но только в поддокументах соответствия property1 = "пример".
Есть ли способ сделать это?
Я попытался решение с использованием Aggregate, но без какого-либо успеха:
MyEntityModel.aggregate([
{$match: { "_id": myId, "sub.property1":"example" }},
{$unwind: "$sub"},
{$match: { "sub.property1":"example"}},
{$group: {"_id":"$_id","subs":{$push:"$sub"}}}
], (error, result) => {
console.log("Result = " + JSON.stringify(result));
}
});
Но это ничего не возвращает. Если я не ставил «_id»: myId в первом предложении $ match, то я получаю результаты, но мне нужен только один результат, который соответствует _id, который у меня есть.
Кто-нибудь знает, как я могу это сделать?
EDIT: Как уже было сказано, вот пример.
С помощью этих данных:
{
"_id": "54c12276fcb2488d300795e4",
"name": "a",
"sub": [
{
"_id": "54c12276fcb2488d300795e0",
"property1": "example",
"property2": "something"
},
{
"_id": "54c12276fcb2488d300795e1",
"property1": "notmuch",
"property2": "somethingelse"
},
{
"_id": "54c12276fcb2488d300795e2",
"property1": "notinteresting",
"property2": "something"
},
{
"_id": "54c12276fcb2488d300795e3",
"property1": "example",
"property2": "anotherthing"
}
]
},
{
"_id": "54c12277fcb2488d300795e5",
"name": "b",
"sub": [
{
"_id": "54c12276fcb2488d300795e6",
"property1": "example",
"property2": "word"
}
]
}
Я хочу, чтобы объект с _id "54c12276fcb2488d300795e4" и subdocs, которые соответствуют property1 = "пример". Таким образом, ожидаемый результат:
{
"_id": "54c12276fcb2488d300795e4",
"name": "a",
"sub": [
{
"_id": "54c12276fcb2488d300795e0",
"property1": "example",
"property2": "something"
},
{
"_id": "54c12276fcb2488d300795e3",
"property1": "example",
"property2": "anotherthing"
}
]
}
Можете ли вы добавить образец данных и результат, который вы хотите здесь? –
@AnanthPai Просто отредактирован, чтобы добавить пример данных и ожидаемый результат. –