由于您似乎担心从表单(例如POST)进来的字符串,所以简单的答案是您将它们转换为Ruby。
如果该字段是您期望的数字,则将其转换为int。日期也是如此。
您的mongo驱动程序将正确解释这些信息,并将它们作为相应的BSON类型存储在您的MongoDB集合中。同样的情况恰恰相反,当您读取收集数据时,您会将其重新转换为您的本机类型。
"1234".to_i
Date.strptime("{ 2014, 2, 22 }", "{ %Y, %m, %d }")
但是这是基本的Ruby部分。
现在你可以做像你伪建议和存储您的信息,而不是原生类型,但作为strings
某种形式的类型标注。但是你看,我只是不明白这一点,你将不得不
在某个阶段检测的类型和应用标签
现场的事实,你只是毁了所有的好处在集合中拥有本地类型。如日期范围的查询和聚合以及值的基本求和。
虽然我们似乎下降了什么类型的赛道,用户只需随意插入数据和其他东西已经制定出它是什么类型,考虑MongoDB的文件下面的例子:
{
name: "Fred",
values: [ 1, 2, 3, 4],
}
{
name: "Sally",
values: "a"
}
所以在蒙戈术语中,文件结构被认为坏。尽管Mongo确实有一个灵活的模式概念,但这种类型的混合将打破的东西。所以,不这样做,而是作如下处理方式,这是完全可以接受的,即使该架构的不同:
{
name: "Fred",
values: [ 1, 2, 3, 4],
}
{
name: "Sally",
mystring: "a"
}
长话短说,您的应用程序应该知道类型的的数据。如果您允许user defined forms
,然后您的应用程序需要能够将类型附加到它们。如果你有一个字段可能是字符串或日期,然后您的应用程序需要确定它是什么类型,并投它,或以其他方式正确保存。
既然这样,你将重新考虑你使用的情况下,而不是等待别的工作了这一切,为你受益。
你说的是来自POST输入参数的字段数据comimg的权利? –
是的,我特别担心ISODate和布尔转换 – ducktyped