Apache Zeppelin db.collection.find 问题

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

当我在 zeppelin 中执行上面列出的代码时,它应该根据我在 ${value=none} 框中输入的值在键中查找精确结果,但它不会对其进行过滤。它只是显示所有数据。有什么想法吗?如何解决?

答案1

Zeppelin 的 MongoDB 解释器使用与 shell 相同的语法mongodb.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" }。您还可以指定其他查询条件和要包含在结果中的字段的投影。

相关内容