db.${collection=none}.find( {}, { ${key=none}: [ { $eq: "${value=none}" } ] } ).table()
当我在 zeppelin 中执行上面列出的代码时,它应该根据我在 ${value=none} 框中输入的值在键中查找精确结果,但它不会对其进行过滤。它只是显示所有数据。有什么想法吗?如何解决?
答案1
这Zeppelin 的 MongoDB 解释器使用与 shell 相同的语法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()
在第二个示例中,您的查询将以 Zeppelin 输入形式表示{ field: "value" }
。您还可以指定其他查询条件和要包含在结果中的字段的投影。