сравнивая поле строки с полем под-массива в mongodb [duplicate]

Еще один способ выполнить это с флагом 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

15
задан hotips 24 January 2013 в 14:24
поделиться

1 ответ

Хмм без особого тестирования на моем конце я скажу, что вы можете использовать $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, чтобы проверить.

33
ответ дан Sammaye 31 August 2018 в 16:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: