MongoDB数据读写的几种方法
1、MongoDB Shell Script mongoDB的命令行使用的是类似JavaScript脚本的命令行交互,所以我们可以在shell当中使用JS的一些命令、函数等。 输入mongo命令启动mongo控制台 然后参考官方文档操作mongo数据。 常用命令有 show dbsuse db-nameshow collectionsdb.
1、MongoDB Shell Script
mongoDB的命令行使用的是类似JavaScript脚本的命令行交互,所以我们可以在shell当中使用JS的一些命令、函数等。
输入mongo命令启动mongo控制台
然后参考官方文档操作mongo数据。
常用命令有
show dbs use db-name show collections db.collection.find() db.collection.findOne() db.collection.remove(args) db.collection.insert(args)
等。CURD操作可以参考官方文档。
如果要生成大量测试数据,我们可以在mongo shell里面写一个for循环,
for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )
或者新建一个script.js将脚本放入循环内:
function insertData(dbName, colName, num) { var col = db.getSiblingDB(dbName).getCollection(colName); for (i = 0; i < num; i++) { col.insert({x:i}); } print(col.count()); }
1、将其放入"~/.mongorc.js"这个文件内
2、将其保存为script.js,然后运行mongo控制台时输入如下命令,会得到后台执行:
mongo SERVER:PORT/dbname --quiet script.js
2、利用MongoDB JAR包编写Java代码访问Mongo数据库
下载MongoDB Java Driver:点击打开链接
添加进Java Project内。具体API文档可以点击这里。
Small Task
下面以一个任务为例说明用法。
任务描述:定时删除三个月前的article。其中每个article与一个聚类相关联,同时数据库中还有聚类(cluster)的数据信息。每次删除article完成后,删除对应的那些无任何文章关联的聚类。
数据类型如下:
{ "_id" : ObjectId("52df7de966f0bc5d1bf4497d"), "clusterId" : 21, "docId" : 2, "title" : "test article 1", "type" : "article" }
任务分析:
1、首先需要依据条件查询到符合“三个月前的”文章数据;
2、提取所有article的id构建成一个列表;
3、提取所有涉及到的cluster的id构建成一个没有重复元素的列表;
4、删除所有满足条件的article;
5、判断每个cluster是否已经为空,若是则进行删除聚类操作。
Java代码如下:
import java.net.UnknownHostException; import java.util.ArrayList; import java.util.HashSet; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.QueryBuilder; public class MongoMainTest { static int today = 0; static int threeMonth = 0; static DBObject documentFields = new BasicDBObject(); static DBObject clusterFields = new BasicDBObject(); static { //此处键值设为true即代表作为返回结果键值 返回 documentFields.put("_id", true); documentFields.put("docId", true); documentFields.put("clusterId", true); documentFields.put("type", true); clusterFields.put("clusterId", true); clusterFields.put("type", true); } // DBCursor cursor = instanceDB.find(new BasicDBObject("assign", vouch),DocumentFields); /** * @param args */ public static void main(String[] args) { Mongo m = null; try { m = new Mongo( "10.211.55.7" , 27017 ); } catch (UnknownHostException e) { e.printStackTrace(); System.exit(0); } DB db = m.getDB("clusterDb"); // List<String> dbs = m.getDatabaseNames(); // System.out.println(dbs); // DBCollection coll = db.getCollection("rkCol"); // BasicDBObject doc = new BasicDBObject("docId",2); //此处为书写查询方法一 // DBCursor curs = coll.find(doc); // DBObject obj = (DBObject)JSON.parse("{docId: 2}"); //书写查询方法二 // curs = coll.find(obj); // while(curs.hasNext()) { // System.out.println("Cursor Count: "+curs.count()); // System.out.println(curs.next()); // } DBCollection coll = db.getCollection("rkCol"); QueryBuilder queryBuilder = new QueryBuilder(); DBObject articleQuery = new BasicDBObject("type", "article")//; .append("timestamp", new BasicDBObject("$lt", today-threeMonth)) .append("clusterId", true); //书写查询方法三 queryBuilder.and(articleQuery); //书写查询方法四 DBCursor curs = coll.find(queryBuilder.get()); //注意方法四在实际使用时需要调用get方法生成具体query语句 ArrayList<Object> articles = new ArrayList<Object>(); //此处element类型均为Object HashSet<Object> clusters = new HashSet<Object>(); DBObject article = null; while(curs.hasNext()) { article = curs.next(); articles.add(article.get("_id")); clusters.add(article.get("clusterId")); } QueryBuilder removeBuilder = new QueryBuilder(); //注意下句使用了$in操作符,类似于{_id: articleID1} or {_id: articleID2} or {_id: articleID3} ... DBObject removeObject = new BasicDBObject("_id", new BasicDBObject("$in", articles)); removeBuilder.and(removeObject); /*打印结果*/ coll.remove(removeBuilder.get()); DBObject articleCountQuery = null; for(Object o: clusters) { articleCountQuery = new BasicDBObject("clusterId", o); curs = coll.find(articleCountQuery); if(curs.count() != 0) { clusters.remove(o); } } removeObject = new BasicDBObject("clusterId", new BasicDBObject("$in", clusters)); removeBuilder.and(removeObject); coll.remove(removeBuilder.get()); /** curs = coll.find(removeBuilder.get()); articles = new ArrayList<Object>(); clusters = new HashSet<Object>(); article = null; while(curs.hasNext()) { article = curs.next(); articles.add(article.get("_id")); clusters.add(article.get("clusterId")); } /**/ System.out.println(articles); System.out.println(clusters); } }
定时操作,参考这篇博文,利用Java代码编程实现(利用开源库Quartz)。
Linux的环境可以使用crontab工具,更为简单方便。此处所需要配合使用的JS代码简略。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

CentOS系統上GitLab數據庫部署指南選擇合適的數據庫是成功部署GitLab的關鍵步驟。 GitLab兼容多種數據庫,包括MySQL、PostgreSQL和MongoDB。本文將詳細介紹如何選擇並配置這些數據庫。數據庫選擇建議MySQL:一款廣泛應用的關係型數據庫管理系統(RDBMS),性能穩定,適用於大多數GitLab部署場景。 PostgreSQL:功能強大的開源RDBMS,支持複雜查詢和高級特性,適合處理大型數據集。 MongoDB:流行的NoSQL數據庫,擅長處理海

CentOS系統下MongoDB高效備份策略詳解本文將詳細介紹在CentOS系統上實施MongoDB備份的多種策略,以確保數據安全和業務連續性。我們將涵蓋手動備份、定時備份、自動化腳本備份以及Docker容器環境下的備份方法,並提供備份文件管理的最佳實踐。手動備份:利用mongodump命令進行手動全量備份,例如:mongodump-hlocalhost:27017-u用戶名-p密碼-d數據庫名稱-o/備份目錄此命令會將指定數據庫的數據及元數據導出到指定的備份目錄。

MongoDB與關係型數據庫:深度對比本文將深入探討NoSQL數據庫MongoDB與傳統關係型數據庫(如MySQL和SQLServer)的差異。關係型數據庫採用行和列的表格結構組織數據,而MongoDB則使用靈活的面向文檔模型,更適應現代應用的需求。主要區別數據結構:關係型數據庫使用預定義模式的表格存儲數據,表間關係通過主鍵和外鍵建立;MongoDB使用類似JSON的BSON文檔存儲在集合中,每個文檔結構可獨立變化,實現無模式設計。架構設計:關係型數據庫需要預先定義固定的模式;MongoDB支持

在Debian系統上為MongoDB數據庫加密,需要遵循以下步驟:第一步:安裝MongoDB首先,確保您的Debian系統已安裝MongoDB。如果沒有,請參考MongoDB官方文檔進行安裝:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/第二步:生成加密密鑰文件創建一個包含加密密鑰的文件,並設置正確的權限:ddif=/dev/urandomof=/etc/mongodb-keyfilebs=512

連接MongoDB的工具主要有:1. MongoDB Shell,適用於快速查看數據和執行簡單操作;2. 編程語言驅動程序(如PyMongo, MongoDB Java Driver, MongoDB Node.js Driver),適合應用開發,但需掌握其使用方法;3. GUI工具(如Robo 3T, Compass),提供圖形化界面,方便初學者和快速數據查看。選擇工具需考慮應用場景和技術棧,並註意連接字符串配置、權限管理及性能優化,如使用連接池和索引。

要設置 MongoDB 用戶,請按照以下步驟操作:1. 連接到服務器並創建管理員用戶。 2. 創建要授予用戶訪問權限的數據庫。 3. 使用 createUser 命令創建用戶並指定其角色和數據庫訪問權限。 4. 使用 getUsers 命令檢查創建的用戶。 5. 可選地設置其他權限或授予用戶對特定集合的權限。
