将没有键的记录存储在mongodb中或使用键进行文档映射

时间:2014-09-12 08:27:56

标签: mongodb nosql

mongodb总是以这样的方式存储记录

{  ' _id' :' 1' , '名称' :' nidhi' }

但我希望以类似

的方式存储

{123,' nidhi'}

我不想一次又一次地在数据库中存储密钥。

是否可以使用mongodb或任何其他数据库。

在nosql中是否有类似sql的东西,我首先像mysql一样设置架构,然后开始在文档中插入值。

1 个答案:

答案 0 :(得分:1)

MongoDB无法做到这一点。文档由键/值对定义。这有点可以做到BSON (Binary JSON) - MongoDB的内部存储格式 - 是从JSON (JavaScript Object Notation)开发的。没有密钥,除了相当笨拙的位置参数外,你根本无法查询数据库。

但是,如果磁盘空间非常宝贵,您可以将建模修改为:

{  _id:1,
   values:['nidhi','foo','bar','baz']
}

然而,与计算能力相比,磁盘空间相对便宜(不是MongoDB使用了很多资源)和RAM(MongoDB的经验法则:越多越好),你的方法没有意义。要使REST API将记录返回给客户端,您所要做的就是(伪代码):

var docToReturn = collection.findOne({_id:requestedId});

if(docToReturn){

  response.send(200,docToReturn);

} else {

  response.send(404,{'state':404,'error':'resource '+requestedId+' not available'});

}

即使可以使用您的方法查询数据,您也必须将返回的值映射到有意义的键。你会如何处理Arrays没有保证订单的事实?或者MongoDB具有动态模式,因此集合中的一个文档可能与另一个文档完全不同?