【问题标题】: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 源代码。

    【讨论】:

      【解决方案3】:

      您可以使用以下任何一个包

      mongodb-language-model

      mongodb-query-parser

      【讨论】:

        【解决方案4】:

        您可以验证结构是否有效,但如果您想知道查询是否真的正确,例如是否具有正确的语法并且可以执行 - 那么不,不是真的。

        【讨论】: