1
db.${collection=none}.find( {}, { ${key=none}: [ { $eq: "${value=none}" } ] } ).table()

Когда я выполняю код, указанный выше, в zeppelin, он должен искать точный результат в ключе на основе значения, которое я ввожу в поле $ {value = none}, но не фильтрует его. Это просто показывает все данные. Есть идеи почему? а как исправить?

1 ответ1

0

Интерпретатор MongoDB для Zeppelin использует тот же синтаксис, что и mongo оболочки: db.collection.find(query, projection).

Ваш первый параметр {} соответствует всем документам. Второй параметр будет интерпретироваться как проекция (хотя ваш синтаксис излишне сложен).

Поскольку $eq эквивалентно {field: "value"} и у вас есть только одно значение, ваш запрос может быть более четко выражен как:

db.${collection=none}.find({ ${key=none}: "${value=none}" }).table()

Если вы намереваетесь предоставить более общую форму ввода (вместо того, чтобы запрашивать одну пару ключ / значение), вы можете вместо этого заменить запрос и проекцию, например:

empty = {}  // Placeholder for empty documents
db.${collection=none}.find(${query=empty},${projection=empty}).table()

Во втором примере ваш запрос будет выражен как { field: "value" } в форме ввода Zeppelin. Вы также можете указать дополнительные критерии запроса и прогноз для полей, которые будут включены в результаты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .