字段';s mongodb中集合的数据类型

字段';s mongodb中集合的数据类型,mongodb,mongoose,Mongodb,Mongoose,如何在mongodb中获取集合的字段信息 我要找的信息是 字段名 数据类型 您需要遍历所有文档,找出使用的名称以及每个特定字段使用的类型。MongoDB没有模式,因此没有捷径获取它。还要注意,每个字段的值可以有完全不同的数据类型,这也是MongoDB的另一个优势 要了解一些统计信息,例如字段名,以下脚本可以提供帮助: mr = db.runCommand({ "mapreduce" : "things", "map" : function() { for (var key in

如何在mongodb中获取集合的字段信息

我要找的信息是

  • 字段名
  • 数据类型

您需要遍历所有文档,找出使用的名称以及每个特定字段使用的类型。MongoDB没有模式,因此没有捷径获取它。还要注意,每个字段的值可以有完全不同的数据类型,这也是MongoDB的另一个优势

要了解一些统计信息,例如字段名,以下脚本可以提供帮助:

mr = db.runCommand({
  "mapreduce" : "things",
  "map" : function() {
    for (var key in this) { emit(key, null); }
  },
  "reduce" : function(key, stuff) { return null; }, 
  "out": "things" + "_keys"
})
然后在生成的集合上运行distinct以查找所有键:

db[mr.result].distinct("_id");

但是,没有办法将字段类型也包含在这样的Map/Reduce作业中。

您无法确定集合的架构。E集合中的每个对象可能具有不同的模式,您应该注意这一点


,在文章中,您可以找到如何使用java编程语言检索对象的模式;然而,就我所知,除了尝试强制转换对象(t)之外,没有其他方法可以检索数据类型

MongoDB支持动态模式,并且在MongoDB 2.4中没有用于模式内省或分析的内置功能

然而。。可以通过在文档样本或整个集合中使用Map/Reduce进行检查来推断模式

有一些开源工具将此方法打包到一个有用的界面中,例如:

  • -使用
    collection.schema()
    prototype扩展
    mongo
    shell
  • -作为独立脚本运行
我喜欢
schema.js
的方法,并将其包含在我的启动文件中,这样它就可以在我的
mongo
shell会话中使用


默认情况下,
schema.js
分析集合中最多50个文档,并以内联方式返回结果。有一个
limit
选项可以检查集合中的更多(甚至所有)文档,它支持Map/Reduce,因此可以选择将结果保存或与输出集合合并。

如果文档有结构,代码需要更复杂。在无架构的数据库中,您想做什么?