Abh*_*are 5 java jsp mongodb angularjs spring-boot
我是MongoDB的新手.我已经使用MongoDB进行了"粗略"操作.
我想在MongoDB中使用事件功能,当数据插入到MongoDB时,应该发生事件,并且MongoDB本身应该在UI上立即发送数据.
这在MongoDB中可能吗?
如果是,那么如何?如果没有那么为什么?
提前致谢.
您可以将 atailable cursor与选项一起使用Bytes.QUERYOPTION_AWAITDATA。关于 Mongodb 的 tailable 游标的文档:https ://docs.mongodb.com/manual/core/tailable-cursors/
...在客户端将新的附加文档插入上限集合后,可尾游标将继续检索文档。
当您使用不满足的查询检索文档时,将返回空游标。然后,当您调用 时cur.hasNext(),它将等待数据出现(有超时):
mongoTemplates.createCollection("model", new CollectionOptions(null, 10, true));
DBObject query = new BasicDBObject("value", "val");
DBCursor cur = mongoTemplates.getCollection("model")
.find(query)
.addOption(Bytes.QUERYOPTION_TAILABLE)
.addOption(Bytes.QUERYOPTION_AWAITDATA);
new Thread() {
public void run() {
//cur.hasNext will wait for data
while (cur.hasNext()) {
DBObject obj = cur.next();
System.out.println(obj);
}
};
}.start();
Run Code Online (Sandbox Code Playgroud)
cursor.hasNext()当您在 mongodb 中插入以下内容时将解锁:db.model.insertOne({value: "val"})为此,必须使用“capped”选项创建集合:
在java中:mongoTemplates.createCollection("model", new CollectionOptions(MAX_SIZE_BYTES, MAX_NB_DOCUMENTS, IS_CAPPED));
在蒙戈客户端:db.createCollection( "model", { capped: true, size: 10 } )
文档Capped Collection中对此进行了解释:
默认情况下,当客户端用完游标中的所有结果时,MongoDB 将自动关闭游标。但是,对于上限集合,您可以使用可尾游标,该游标在客户端耗尽初始游标中的结果后仍保持打开状态。
| 归档时间: |
|
| 查看次数: |
3162 次 |
| 最近记录: |