gpt4 book ai didi

node.js - 使用 node.js 检索用于 mongo 查询的副本实例

转载 作者:IT老高 更新时间:2023-10-28 13:23:20 28 4
gpt4 key购买 nike

我使用 official node.js mongodb client用于通过类似于以下的连接字符串执行针对集群的 Mongo 查询:mongodb://euwest1-01,euwest1-02,uswest2-01/dbname?replicaSet=mycluster&readPreference=nearest。如您所见,我在集群中包含了一些不同地理位置的实例,“最近”应该保证选择正确的副本。

不过,我想知道哪个用于执行任何查询,以便我可以将用于执行查询的 mongo 副本包含到我的每个操作日志中。

围绕 Cursor 进行黑客攻击对象,我可以用一种 hacky 的方式得到我想要的:

const find = (query, callback) => {

let cursor = coll.find(query);
cursor.toArray((err, items) => {
console.log(cursor.server.ismaster.me);
callback(err, items);
});
};

但我觉得这可能会在任何时候中断,因为没有记录 + 它似乎仅限于 Cursor 交互(所以我不知道如何为 findOne 方法实现相同的效果)。

有人知道这样做的干净方法吗?

最佳答案

您可能对使用 APM 界面感兴趣。

http://mongodb.github.io/node-mongodb-native/2.2/reference/management/apm/

这让您可以访问由驱动程序运行的每个操作的上下文,并且确实适用于 APM 提供商,但如果您想跟踪或记录您的操作是如何执行的,它可能对您有用。

var listener = require('mongodb').instrument({
operationIdGenerator: {
operationId: 1,

next: function() {
return this.operationId++;
}
},

timestampGenerator: {
current: function() {
return new Date().getTime();
},

duration: function(start, end) {
return end - start;
}
}
}, function(err, instrumentations) {
// Instrument the driver
});

listener.on('started', function(event) {
// command start event (see https://github.com/mongodb/specifications/blob/master/source/command-monitoring/command-monitoring.rst)
});

listener.on('succeeded', function(event) {
// command success event (see https://github.com/mongodb/specifications/blob/master/source/command-monitoring/command-monitoring.rst)
});

listener.on('failed', function(event) {
// command failure event (see https://github.com/mongodb/specifications/blob/master/source/command-monitoring/command-monitoring.rst)
});

关于node.js - 使用 node.js 检索用于 mongo 查询的副本实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39962946/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com