Еще один способ выполнить это с флагом jq "--arg". Используя исходный пример:
#!/bin/sh
#this works ***
projectID=$(cat file.json | jq -r '.resource[] |
select(.username=="myemail@hotmail.com") | .id')
echo "$projectID"
EMAILID=myemail@hotmail.com
# Use --arg to pass the variable to jq. This should work:
projectID=$(cat file.json | jq --arg EMAILID $EMAILID -r '.resource[]
| select(.username=="$EMAILID") | .id')
echo "$projectID"
См. Здесь, где я нашел это решение: https://github.com/stedolan/jq/issues/626
Хмм без особого тестирования на моем конце я скажу, что вы можете использовать $cmp
для этого:
http://docs.mongodb.org/manual/reference/aggregation/cmp/ #_S_cmp
db.test.aggregate([
{$project: {
// All your other fields here
cmp_value: {$cmp: ['$a', '$b']}
}},
{$match: {cmp_value: {$gt: 0}}}
])
Возможно, будет лучший способ, но у меня нет установки MongoDB, чтобы проверить.