Недавно мне было трудно найти объект, хранящийся в документе, с его ключом в другом поле того же документа.Найти объект MongoDB, используя значение другого поля
{
list : {
"red" : 397n8,
"blue" : j3847,
"pink" : 8nc48,
"green" : 983c4,
},
result : [
{ "id" : 397n8, value : "anger" },
{ "id" : j3847, value : "water" },
{ "id" : 8nc48, value : "girl" },
{ "id" : 983c4, value : "evil" }
]
}
}
Я пытаюсь получить значение «синий», который имеет идентификатор «j3847» и значение «вода».
db.docs.find({ result.id : list.blue }, { result.value : 1 });
# list.blue would return water
# list.pink would return girl
# list.green would return evil
Я пробовал много вещей, и даже нашел большую статью о том, как обновить значение, используя значение в том же документе .: Update MongoDB field using value of another field который я основанный себя на; без успеха ...:/
Как я могу найти объект MongoDB, используя значение другого поля?
Можно ли вернуть другие значения, отличные от тех, которые соответствуют условию? – samland
@samland Да, вы можете добавить еще одно поле к своей [проекции] (https://docs.mongodb.org/v3.0/reference/operator/aggregation/project/) с таким синтаксисом: поле: 1. Или вы можете проецировать весь документ в поле с помощью [$$ ROOT] (https://docs.mongodb.org/manual/reference/aggregation-variables/). В проекции это будет выглядеть так: document: «ROOT» –
Очень просто и работает как шарм. – samland