Випуск Apache Zeppelin db.collection.find


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

Коли я виконую перерахований вище код у цеппеліні, він повинен шукати точний результат у ключі на основі значення, яке я вводимо у поле $ {value = none}, але він не фільтрує його. Він просто показує всі дані. Будь-які ідеї чому? і як це виправити?


Ви можете показати дані, які ви отримуєте, і дані, які ви очікуєте отримати, а також запит, який я думаю. Я не знаю MongoDB, але це виглядає як дані типу формату JSON, але, можливо, саме так працює логіка з цією мовою. У будь-якому випадку, чи можете ви надати будь-які тестові дані та результати, які ви отримаєте зараз, та показати результати, які б ви хотіли?
Pimp Juice IT

Відповіді:


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. Ви також можете вказати додаткові критерії запиту та прогнозувати поля, які потрібно включити до результатів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.