当前位置:首页 » 股票交易 » 股票交易记录到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