我想创建一个名为“status”的特殊MongoDB集合,我想指定它可能只包含一个文档。在任何情况下,我都不希望这个集合包含多个文档。这可能吗?MongoDB - 指定集合可能只包含一个文档
0
A
回答
2
您可以通过唯一索引来完成此操作。例如:
rs0:PRIMARY> db.unique.insert({a:1})
rs0:PRIMARY> db.unique.find()
{ "_id" : ObjectId("547e2c8c9678b5b7ab75a014"), "a" : 1 }
rs0:PRIMARY> db.unique.ensureIndex({b:1}, {unique:true})
rs0:PRIMARY> db.unique.insert({a:2})
E11000 duplicate key error index: test.unique.$b_1 dup key: { : null }
添加上,你知道永远不会是你的方案的一部分,任何领域的唯一索引。 (在这个例子中'b')然后它将被索引为null,防止插入任何其他空项目。它会在尝试插入时在您的应用代码中引发异常。
+0
这样做的好方法! – 2014-12-02 21:28:24
1
是的,可以通过使用Capped Collection来为集合大小和文档数量设置集合上限。
这是如何创建一个封顶集合:
db.createCollection("log", { capped : true, size : 5000, max : 1 })
这个系列将始终具有尺寸小于5000,且只能包含1号文件。
请注意,加盖集合的工作方式与循环缓冲区类似:一旦集合填满其分配的空间,它就会通过覆盖集合中最早的文档为新文档腾出空间。
相关问题
- 1. 单个集合在mongoDb中可以包含多少个文档?
- 2. 的MongoDB插入每一个文档的文档中包含像这样的一些文件另一个集合
- 3. 文档在一个集合的MongoDB
- 4. 检查一个集合是否至少包含一个文档
- 5. 的MongoDB:一个属性添加到指定的用户集合的子文档
- 6. 一个集合应该只包含不可变元素吗?
- 7. 使用一个集合只用MongoDB的
- 8. 指定索引文档集合整理
- 9. 在NodeJS中插入多个id文档到一个集合mongoDB
- 10. 如何确定实体集合是否包含几个可能的值之一?
- 11. MongoDB/Node:将集合中的文档的一部分插入另一个集合中的文档
- 12. MongoDB模式设计。另一个集合或子文档?
- 13. 集合是否可能包含两个指向同一对象的共享指针?
- 14. 从另一个集合中匹配的一个mongo集合中删除文档
- 15. 查找其数组字段包含MongoDB中的一些子集的文档
- 16. MongoDB集合可以在其中有另一个集合吗?
- 17. MongoDB中的只写集合
- 18. 我如何在XSD中指定一个元素只包含CDATA?
- 19. Loopback Model Relation:如何在另一个集合中包含集合
- 20. 的MongoDB:鸟巢一个集合在另一个查询的文档的结果
- 21. MongoDB:将引用文档的集合作为子文档复制
- 22. 如何使用文档ID从mongoDB集合中删除文档?
- 23. 我如何插入单个文档到多个集合MongoDB中
- 24. 在MongoDB中查找包含不包含具有特定字段值的文档的数组的文档
- 25. 的MongoDB查询文档与指定SUBDOCS
- 26. MYSQL:外键可以包含一个集合吗?
- 27. 是否可以坚持包含另一个集合的地图
- 28. Laravel集合包含
- 29. MongoDB定义具有数组作为文档的集合
- 30. 泛型集合 - 确保集合只包含一种类型的对象?
您可以使用限制为1的加盖集合。从未尝试过。问题在于它一次只能包含1个,但并不总是相同的文档。 http://docs.mongodb.org/manual/core/capped-collections/ – Matt 2014-12-02 19:14:59
谢谢 - 现在正在研究这种方法。 – jononomo 2014-12-02 19:25:54