所以我使用GSON从API解析JSON,并且如何解析数据中的动态字段.
以下是查询返回的JSON数据的示例:
{
-
30655845: {
id: "30655845"
name: "testdata
description: ""
latitude: "38"
longitude: "-122"
altitude: "0"
thumbnailURL: http://someimage.com/url.jpg
distance: 9566.6344386665
}
-
28688744: {
id: "28688744"
name: "testdata2"
description: ""
latitude: "38"
longitude: "-122"
altitude: "0"
thumbnailURL: http://someimage.com/url.jpg
distance: 9563.8328713012
}
}
Run Code Online (Sandbox Code Playgroud)
我目前处理单个静态值的方法是使用类:
import com.google.gson.annotations.SerializedName;
public class Result
{
@SerializedName("id")
public int id;
@SerializedName("name")
public String name;
@SerializedName("description")
public String description;
@SerializedName("latitude")
public Double latitude;
@SerializedName("longitude")
public Double longitude;
@SerializedName("altitude")
public Double altitude;
@SerializedName("thumbnailURL")
public String thumbnailURL;
@SerializedName("distance") …Run Code Online (Sandbox Code Playgroud) 好吧,所以我正在构建一个基于Node.js的应用程序,我正在使用mongoose来处理我与mongodb的连接.我有一个端点是这样的:
getTestStream : function(req, res, conditions, callback) {
Activity.find()
.limit(1000)
.run(function(err, activities) {
if (err){
util.sendError(req, res, "Query Error", err);
} else if (activities) {
res.send(activities);
} else {
util.send('nope');
}
});
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,此调用需要700毫秒+才能完成.即使没有应用mongodb shell的限制,相同的调用也会在大约4ms内返回.这看起来像是一个简单的查询,那么是什么让它减慢了这么多?我猜我错过了配置中某些显而易见的东西,但我不知道.
感谢任何可以提供帮助的人.
其他信息:
mongoose@2.6.0
mongodb@2.0.4
node@0.6.9
Run Code Online (Sandbox Code Playgroud) 我想从一个集合中删除大量旧文档,因此使用批量 api 是有意义的。删除它们很简单:
var bulk = db.myCollection.initializeUnorderedBulkOp();
bulk.find({
_id: {
$lt: oldestAllowedId
}
}).remove();
bulk.execute();
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,这将尝试删除符合此条件的每个文档,在本例中是数百万个文档,因此出于性能原因,我不想一次删除它们。我想对操作实施限制,以便我可以执行类似操作bulk.limit(10000).execute();,将操作间隔几秒钟,以防止锁定数据库的时间超过必要的时间。但是,我无法找到任何可以传递到批量以限制其执行数量的选项。
有没有办法以这种方式限制批量操作?
在有人提到它之前,我知道bulk会自动将操作分割成1000个文档块,但它仍然会尽可能快地按顺序执行所有这些操作。这会导致性能影响比我现在可以处理的要大得多。
来自through2文档:
\n\n\n你需要这个吗?
\n自从 Node.js 引入了简化流构造以来,\nthrough2 的许多使用都变得多余了。考虑您是否确实需要\n使用 through2 还是只想使用\'readable-stream\' 包或\n核心\'stream\' 包(源自\'readable-stream\')。
\n
如果我理解正确的话,现在(从 2021 年开始)我们可以在没有第三方库的情况下干预流。\n我没有找到如何执行与Stream 文档through2中相同的操作。
// ...\n .pipe(through2(function (file, encoding, callback) {\n // Do something with file ...\n callback(null, file)\n }))\n\n// \xe2\x86\x91 Possible to reach the same effect natively (with core packages)?\nRun Code Online (Sandbox Code Playgroud)\n我想,2021 年一定会有一些支持 async/await 语法的方法:
\n// ...\n .pipe(newFeatureOfModernNodeJS(async function (file) {\n\n await doSomethingAsyncWithFile(file);\n // on fail - same effect as "callback(new Error(\'...\'))" of trough2\n\n return file; // …Run Code Online (Sandbox Code Playgroud)