【问题标题】:Is there such a thing as JSON schema for MongoDB query language itself?MongoDB 查询语言本身是否有 JSON 模式之类的东西?
【发布时间】:2025-11-30 07:25:01
【问题描述】:
MongoDB 查询——至少在 JavaScript 中——被构造为 JSON,但它非常灵活,所以我知道这不是一件简单的事情,实际上甚至不确定这是否可能,但只是想知道。
是否有 JSON 模式来检测随机 JSON 是否是有效的 MongoDB 查询对象?
【问题讨论】:
标签:
json
mongodb
jsonschema
【解决方案1】:
你可以使用mongodb-language-model之类的东西
如何使用
var accepts = require('mongodb-language-model').accepts;
console.log(accepts('{"ns":{"$in":["foo", "bar", "baz"]}}')); // true
console.log(accepts('{"ns":{"$in":{}}}')); // false
console.log(accepts('{"ns":{"$regex": "foo"}}')); // true
【解决方案2】:
似乎 MongoDB Compass 已经(至少部分地)为许多命令(如 $or、$ 和 $text / $search 等)实现了查询语言验证。Compass 不仅检查您的查询是否是有效的 JSON,而是还验证您是否提供了正确的查询格式。
如果您对它的实现方式感兴趣,我建议您查看 github 源代码。
【解决方案4】:
您可以验证结构是否有效,但如果您想知道查询是否真的正确,例如是否具有正确的语法并且可以执行 - 那么不,不是真的。