gpt4 book ai didi

node.js - Meteor Mongo BulkOp 将 ObjectID 转换为普通对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:41 25 4
gpt4 key购买 nike

在使用 Meteor 时,我有时会访问底层 Node Mongo 驱动程序,以便可以进行批量更新和插入。

const bulk = Coll.rawCollection().initializeOrderedBulkOp();

bulk.insert({key_id: Mongo.Collection.ObjectID()}); // note key_id is an ObjectID
...

bulk.execute();

但是当我在插入后查看数据库时,key_id 字段的值最终成为纯子文档 {_str: '...'}

有没有办法在 Node 的 Mongo 库中使用批量操作(无论 Meteor 使用什么)并将 ObjectID 保留为 Mongo 的 ObjectID 类型?

(有很多关于不同 ID 类型的性质的文章,并解释了 Minimongo 等。我对将 ObjectID 转换为普通对象的批量操作特别感兴趣,并解决了该问题。)

最佳答案

来自Neil's top-level comment

On a native method you would actually need to grab the native implementation. You should be able to access from the loaded driver through MongoInternals [...]

Mongo.Collection.ObjectID is not a plain ObjectId representation, and is actually a complex object for Meteor internal use. Hence why the native methods don't know how to use the value.

因此,如果您有某个 ObjectId 字段,并且您正在使用 Meteor Collection 的 rawCollection 的某种方法(例如,

  • .distinct
  • .aggregate
  • .initializeOrderedBulkOp
  • .initializeUnorderedBulkOp

),您需要使用 ObjectId 转换

const convertedID = new MongoInternals.NpmModule.ObjectID(
originalID._str
);
// then use in one of the arguments to your function or something
const query = {_id: convertedID};

在调用它们的方法之前。

关于node.js - Meteor Mongo BulkOp 将 ObjectID 转换为普通对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164896/

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