mongo shell和可能的各种驱动程序是否支持非严格JSON的查询?

时间:2014-11-04 02:34:03

标签: json mongodb

我是最后一个对事情挑剔的人,但似乎在我学习MongoDB时,我看到的查询,插入等等并不是我所理解的严格的JSON。我的意思是所有键都应该有引号,以及不是数字的值。关于JSON本身我是错的,或者MongoDB是不是对使用类似JSON的语法如此挑剔?这可能是这里的关键术语,“类JSON”语法。 谢谢, 布鲁斯

1 个答案:

答案 0 :(得分:1)

MongoDB首先不使用JSON。它使用BSON,它有点类似于外部的JSON,但支持更多类型,更重要的是,它是二进制,而不是文本。

这意味着在 no 语言/驱动程序中MongoDB查询JSON。

大多数MongoDB驱动程序使用基础语言的字典(哈希映射)类型来表示查询,例如:

# Python example
blah = collection.find({'foo': 'bar'})

请注意{'foo': 'bar'}是一个Python字典,而不是JSON字符串。 MongoDB驱动程序(本例中为PyMongo)在将数据发送到数据库之前接受该数据并将其序列化为BSON。无论数据库发送回什么内容都将是BSON - 驱动程序将其反序列化并将其作为本机Python数据结构返回给您。

在我看过MongoDB支持的其他语言中也会发生同样的事情。 JSON 永远不会使用。