Как избежать знака $$ при написании bash?
, если я хочу написать $let
Я делаю это: \"\$let\"
и все работает нормально.
но если я хочу написать $$building.gateways
, как мне это сделать? В настоящее время пытается как: \"\$\$building.gateways\"
, но не работает.
Ниже строки, например:
COMMAND+=",\"in\": { \"\$let\": {\"vars\": {\"gateway\": {\"\$arrayElemAt\": [{\"\$filter\": {\"input\": \"\$\$building.gateways\",\"cond\": {\"\$eq\": [\"\$\$this._id\",\"\$gatewayId\"]}}},0]}}"
ОБНОВЛЕНО: я пытаюсь преобразовать синтаксис запроса ниже mon go в сценарий bash.
device: {
$let: {
vars: {
building: {
$arrayElemAt: [
{
$filter: {
input: "$accountInfo.buildings",
cond: {
$eq: [
"$$this._id",
"$buildingId"
]
}
}
},
0
]
}
},
in: {
$let: {
vars: {
gateway: {
$arrayElemAt: [
{
$filter: {
input: "$$building.gateways",
cond: {
$eq: [
"$$this._id",
"$gatewayId"
]
}
}
},
0
]
}
},
in: {
$arrayElemAt: [
{
$filter: {
input: "$$gateway.devices",
cond: {
$eq: [
"$$this._id",
"$deviceId"
]
}
}
},
0
]
}
}
}
}
}
This это то, что у меня есть сейчас, но это не работает. (Я думаю, что часть с $$
терпит неудачу и возвращает ноль). запрос работает в оболочке mon go, поэтому запрос правильный.
\"device\": {\"\$let\": {\"vars\": {\"building\": {\"\$arrayElemAt\": [{\"\$filter\": {\"input\": \"\$accountInfo.buildings\",\"cond\": {\"\$eq\": [\"\$\$this._id\",\"\$buildingId\"]}}},0]}},
\"in\": {\"\$let\": {\"vars\": {\"gateway\": {\"\$arrayElemAt\": [{\"\$filter\": {\"input\": \"\$\$building.gateways\",\"cond\": {\"\$eq\": [\"\$\$this._id\",\"\$gatewayId\"]}}},0]}},
\"in\": {\"\$arrayElemAt\": [{\"\$filter\": {\"input\": \"\$\$gateway.devices\",\"cond\": { \"\$eq\": [\"\$\$this._id\", \"\$deviceId\"]}}},0]}}}}}
Спасибо