當前位置:首頁 » 股票交易 » 股票交易記錄到mongodb

股票交易記錄到mongodb

發布時間: 2022-03-26 02:05:59

1. 向mongodb里插入10萬條記錄的代碼怎麼寫

起初打算用Node.js去做這個性能 測試,碰了幾次壁後,改用Python順利完成任務,現在回過頭來再看這個問題,發現裡面似乎有坑。
先放上一段Node.js的插入10萬條記錄的代碼:
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://127.0.0.1:27017/testdb';
var dataList = []
var globalCount = 0
console.time('insert,10w');
MongoClient.connect(url, {
server: {
poolSize: 50
}
},function(err, db) {
if(err) throw(err)
for(var i=0; i<100000; i++){
db.collection('test1').insert({
count:i
}, function(err, r) {
if(err) throw(err)
globalCount++
if(globalCount>=100000){
console.timeEnd('insert,10w');
process.exit(1);
}
});
}
});

測試結果慢的令人發指,Node.js版本是最新的0.12.2
E:\nodejs>node mongodb_error2.js
insert,10w: 9791ms

我用同樣的Python腳本去做:
import pymongo
import json
import datetime,time
import
import sys, os

def getTimestampFromDatetime(d=None):
if d is None:
d = datetime.datetime.now()
return time.mktime(d.timetuple())

if __name__ == '__main__':
start = getTimestampFromDatetime()
client = pymongo.MongoClient("localhost", 27017, max_pool_size=50)
db = client.testdb

saveData = []
for i in range(0, 100000):
saveData.append({
'count':i
})

db.test2.insert(saveData)
end = getTimestampFromDatetime()
print('time: {0}s'.format(end-start))

測試結果如下:
E:\python>python save_10w.py
time: 1.0

我在想是不是Node.js代碼寫的太垃圾,於是我找了Mongodb包的另外一個insertMany方法,但是結果卻報錯了:
E:\nodejs\node_moles\mongodb\lib\utils.js:97
process.nextTick(function() { throw err; });
^
Error
at Object.<anonymous> (E:\nodejs\node_moles\mongodb\node_moles\mongodb-c
ore\lib\error.js:42:24)
at Mole._compile (mole.js:460:26)
at Object.Mole._extensions..js (mole.js:478:10)
at Mole.load (mole.js:355:32)
at Function.Mole._load (mole.js:310:12)
at Mole.require (mole.js:365:17)
at require (mole.js:384:17)
at Object.<anonymous> (E:\nodejs\node_moles\mongodb\node_moles\mongodb-core\index.js:2:17)
at Mole._compile (mole.js:460:26)
at Object.Mole._extensions..js (mole.js:478:10)

2. 怎麼從mongodb讀取數據java

從Mongodb讀取數據,這個和從RDS關系型資料庫讀取數據原理應該是一樣的;

簡單的可以通過Spring提供的MongoTemplate去實現這個功能;

舉個例子,查找某一條記錄:

publicTfindOne(Criteriacriteria,Sortsort,String[]fields){
DBObjectfd=fields2DBObject(fields);
Queryquery=newBasicQuery(newBasicDBObject(),fd);
query.addCriteria(criteria);
if(sort!=null)
query.with(sort);
returnthis.mongoTemplate.findOne(query,entityClass);
}

/**
*如果是隱藏則首個元素為'$exclude'字元串
*
*@paramfields
*@return
*/
(String[]fields){
DBObjectresult=newBasicDBObject();
if(fields!=null){
intvisible=fields[0].equalsIgnoreCase("$exclude")?0:1;
intstart=visible==0?1:0;
for(inti=start;i<fields.length;i++)
result.put(fields[i],visible);
}
returnresult;
}

3. 如何排序在MongoDB中收集記錄中數組

您將需要處理應用程序中的code中的嵌入式陣列,或使用新的 MongoDB中2.2聚合框架
在蒙戈 Shell實例聚集:
db.students.aggregate(
//初始文件匹配(採用指數,如果有合適的可用)
{$匹配:{
_id:1
}}, //展開得分數組的文件流
{$開卷:'$得分「}, //篩選器'功課'分數
{$匹配:{
「scores.type':'功課'
}}, //排序按降序排列
{$排序:{
「scores.score':-1
}}


示例輸出:
{
「結果」:
{
「_id」:1,
「名」:「梅嫩德斯奧里利亞」
「算賬」:{
「類型」:「功課」,
「分數」:71.76133439165544
}
},
{
「_id」:1,
「名」:「梅嫩德斯奧里利亞」
「算賬」:{
「類型」:「功課」,
「分數」:34.85718117893772
}
}
]
「確定」:1
}

4. Mongodb存儲用戶歷史數據,時間軸展示,怎麼查詢效率高

可以考慮用mongodb的固定集合存儲,不過固定集合不允許修改和刪除,也只能存儲你設定大小的數據,有一定的限制,但是查詢非常快,而且都是有序的。
或者你用普通集合存儲,按時間和用戶ID建立復合索引,這樣查詢的時候效率會提高不少,像這種日積月累的數據,最好有個分割線的存儲機制,不常查詢到的數據應該存儲在其他表裡,常常需要檢索的數據應該單獨存儲,因為不是所有的用戶每次都需要查詢所有的歷史記錄,先就這些吧,歡迎補充更好的方法。

5. linux怎麼查詢mongodb的操作記錄

db.msgall.find({"code":"批次號1","status":"0"} ,{code:1,cid:1,content:1,status:1});
db.msgall.find({"code":"批次號2","status":"0"} ,{code:1,cid:1,content:1,status:1});
db.msgall.find({"code":"批次號3","status":"0"} ,{code:1,cid:1,content:1,status:1});
exit;

6. Mongodb 如何做到在只保留最新的50條記錄

MongoDB有兩種集合能實現比較類似的功能。

一種是TTL(Time To Live)集合,mongod會自動刪除過期的文檔。

另一種是capped集合,該集合是一個固定大小的集合,當該集合存滿數據時,mongod會自動通過覆蓋最舊的文檔來存放新的文檔。

7. mongodb 檢索 1000萬條記錄 需要多少時間

cursor.count和cursor.skip。
但是mongodb不保證數據的順序,如果你需要的是最新加入資料庫的那一條doc,你最好在doc里加一個時間來記錄存入資料庫的時候,然後根據這個時間來排序。

8. mongodb查詢為什麼只能查詢到一條記錄

List<DBObject> list = collection.find($where).toArray();

不對·
結果集 = 載體.executeQuery(sql);

9. 怎麼將mongodb裡面的sql操作記錄下來

准備
在此之前,我們先在我們的資料庫中插入10萬條數據。數據的格式是這樣的:
?

1
2
3
4
5
6

{
"name":"your name",
"age":22,
"gender":"male",
"grade":2
}

explain
explain方法是用來查看db.collecion.find()的一些查詢信息的。例如:
?

1

db.collectionName.find().explain()

explain方法有個可選的參數verbose,是個字元串,他表示的是verbose的模式。一共分為3種模式:
queryPlanner:默認參數,詳細說明查詢優化器選擇的計劃並列出

熱點內容
股票軟體查歷史持倉 發布:2025-02-02 09:47:03 瀏覽:116
參加期貨考試需要准備什麼 發布:2025-02-02 09:44:40 瀏覽:814
會通股票歷史交易數據 發布:2025-02-02 09:44:38 瀏覽:885
國家央行降息對股市有什麼影響 發布:2025-02-02 09:39:02 瀏覽:427
汽車晶元基金哪個值得買 發布:2025-02-02 09:38:27 瀏覽:981
為什麼炒股不如投資指數基金 發布:2025-02-02 09:34:10 瀏覽:657
股權回購和交割各是什麼意思 發布:2025-02-02 09:29:15 瀏覽:486
股權眾籌有什麼坑 發布:2025-02-02 09:29:08 瀏覽:593
5月3日漲停股票 發布:2025-02-02 09:24:01 瀏覽:412
炒股軟體如何提升盈利 發布:2025-02-02 08:20:24 瀏覽:364