mongodb的数据结构

MongoDB文档结构:

mongodb的数据结构为db -> collection -> data
db可以理解为关系数据库的数据库
collection可以理解为表
data为元素,即对象或文档(可以嵌套。。。)

 

与关系数据库的区别在于:
db和collection都不用创建,在对db和collection使用时mongodb会自动判断当前使用的db和collection是否存在,如果不存在会自动创建需要注意的是在use dbname; 并不会马上创建dbname, 直到往该库中插入数据时才会创建数据库,也意味着在调用use dbname; 后, 显示当前数据库show dbs; 并不会列出dbname.

同一个collection中data的格式不用一致,比如第一个元素可以是{name: "testuser"}, 第二个元素可以是{age: 14, sex: "female"}.

可以把mongodb的shell完全看成是一个javascript runtime, 语法和javascript几乎一样

例子:
>use testdb;  
>db.collection1.save({name: "shitou"});  
>db.collection1.save({name: "ccok", age: 24});  
>db.collection2.save({name: "shitou", sex: "male"});  
>db.collection1.find(); #返回数组  
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }  
{ "_id" : ObjectId("4be82db9dc68b2484f57e442"), "name" : "ccok", "sex" : "male" }  
>db.collection1.find()[0];  
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }  
 
>db.collection1.findOne({_id: ObjectId("4be82d1bdc68b2484f57e441")}) #返回一条记录  
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" } 

>use testdb;
>db.collection1.save({name: "shitou"});
>db.collection1.save({name: "ccok", age: 24});
>db.collection2.save({name: "shitou", sex: "male"});
>db.collection1.find(); #返回数组
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }
{ "_id" : ObjectId("4be82db9dc68b2484f57e442"), "name" : "ccok", "sex" : "male" }
>db.collection1.find()[0];
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }

>db.collection1.findOne({_id: ObjectId("4be82d1bdc68b2484f57e441")}) #返回一条记录
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }

 

从上面可以看到一个collection中的数据结构不需要一致,但在实际使用和设计中每个collection中数据结构应该保持一致.

 

你可能感兴趣的:(JavaScript,数据结构,mongodb)