mongodb总是以这样的方式存储记录
{ ' _id' :' 1' , '名称' :' nidhi' }
但我希望以类似
的方式存储{123,' nidhi'}
我不想一次又一次地在数据库中存储密钥。
是否可以使用mongodb或任何其他数据库。
在nosql中是否有类似sql的东西,我首先像mysql一样设置架构,然后开始在文档中插入值。
答案 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具有动态模式,因此集合中的一个文档可能与另一个文档完全不同?