MongoDB学习系列4:固定集合

固定集合需要事先创建,而且大小固定。

它有点类似环形队列,如果空间不足,则最早的文档会被删除,这意味着固定集合会在新文档插入的时候自动淘汰最早的文档。

它与普通集合有一个区别,默认情况下,固定集合没有索引,即便是"_id"也没有索引。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> db.createCollection("mycollection",{capped:true,size:100000})
{ "ok" : 1 }

上图表示建立一个 mycollection集合,固定集合,大小为100000字节。

 


> db.createCollection("mycollectionwithmaxdocuments",{capped:true,size:100000,max:100})
{ "ok" : 1 }

上面的代码表示另外设定了最大文档数量的属性为100.

~~~~~~~~~~~~~~~~~~

对于已经有的集合,可以通过convertToCapped命令来转变成固定集合。

关于排序

由于固定集合存储文档的顺序类似于环形队列,所以下面来看2个例子有个认识。

> db.mycollection.insert({"name":"a fan da"})
> db.mycollection.insert({"name":"bbb"})
> db.mycollection.insert({"name":"ccc"})
> db.mycollection.find()
{ "_id" : ObjectId("52b6d8fc2d1237e40f2ccb62"), "name" : "a fan da" }
{ "_id" : ObjectId("52b6d9032d1237e40f2ccb63"), "name" : "bbb" }
{ "_id" : ObjectId("52b6d9072d1237e40f2ccb64"), "name" : "ccc" }
> db.mycollection.find().sort({"$natural":1})
{ "_id" : ObjectId("52b6d8fc2d1237e40f2ccb62"), "name" : "a fan da" }
{ "_id" : ObjectId("52b6d9032d1237e40f2ccb63"), "name" : "bbb" }
{ "_id" : ObjectId("52b6d9072d1237e40f2ccb64"), "name" : "ccc" }
> db.mycollection.find().sort({"$natural":-1})
{ "_id" : ObjectId("52b6d9072d1237e40f2ccb64"), "name" : "ccc" }
{ "_id" : ObjectId("52b6d9032d1237e40f2ccb63"), "name" : "bbb" }
{ "_id" : ObjectId("52b6d8fc2d1237e40f2ccb62"), "name" : "a fan da" }

可以看到可以根据插入的顺序来自然或者逆序获得文档。

 

你可能感兴趣的:(mongodb)