Snažím se vytvořit šablonu pro Mongo najít dotaz, který vrátí všechny, které odpovídají dané velikosti pole vlastnost. Například, toto je dotaz, najít všechny dokumenty, které obsahují pole o velikosti 5:
{ arrayProperty: { $size: 5} }
Problém: některé z těchto polí mají hodnotu "nula" a nechci, aby tyto hodnoty se počítají při dotazu na velikost. Například bych jako dokument obsahující pole strukturované, jako je tento, aby být vrácena při dotazu na velikost 5:
[0,1,2,3,"nil"]
Já jsem už něco dělat, jako je to v rámci agregace:
[
{
$project: {
item: 1,
numberOfItems: { $size: {
$filter: {
input: "$arrayProperty",
cond: { $ne: [ "$$this", "nil" ] }
}
}
}
}
}
]
To je počítání délky/velikosti jednotlivých polí a tlačí to číslo do pole s názvem numberOfItems. Myslím, že budu muset projít filtrované výsledky $size
provozovatelem. Nemůžu zdá se přijít na to, jak využít to v najít syntaxi dotazu a když jsem zoufale o pomoc.
Myšlenka mám na mysli pro flow jsem popsal, je něco takového, i když to není platné:
{$expr:{
$filter: {
input: "$arrayProperty",
cond: { $ne: [ "$$this", "nil" ] }
}: { $size: 5 }
}}
Může někdo pomoci mi? Jak mám správně projít filtrovaný výsledek $size
provozovatel? Nemohu najít žádné další otázky/odpovědi, kde se lidé snažili udělat něco takového.
Jiná situace je, když je "nulová" je vnořená jako hodnoty v JSON objekt v matici, což vím, že bude vyžadovat jiné řešení. Příklad:
[
{
"arrayProperty": [
{
"model": "sedan",
"turbo": "nil"
},
{
"model": "sedan",
"turbo": "60cc"
}
]
},
{
"arrayProperty": [
{
"model": "coupe",
"turbo": "50cc"
},
{
"model": "coupe",
"turbo": "60cc"
}
]
}
]