有没有办法重写Mongodb中的默认功能?

阴影的

所以我想做的是使findOne工作更像在Meteor中,但要通过Mongo shell。简而言之,我希望能够执行类似的操作db.collection.findOne("thisIsAnId")并在该集合中查找该ID。

我尝试加载包含此文件的文件...

db.collection.findOne = function(query, fields, options){
    if(typeof query === "string") {
        return db.collection.originalFindOne({_id : query}, fields, options);
    }

    return db.collection.originalFindOne(query, fields, options); 
}

originalFindOne在哪里链接到default findOne,这根本不起作用。因此,在没有运气找到覆盖默认函数的方法之后,我想也许我可以创建一个新的函数之类的db.collection.simpleFindOne(),但是我找不到一种将其附加到mongo shell的方法,以便任何集合都可以使用它。 。

任何人都对mongo内部工作原理有一些见识,可以给我一些帮助吗?

詹姆斯·格林

尝试将此代码段添加到您的Mongo配置文件之一:

(function() {

// Duck-punch Mongo's `findOne` to work like Meteor's `findOne`
if (
  typeof DBCollection !== "undefined" && DBCollection &&
  DBCollection.prototype && typeof DBCollection.prototype.findOne === "function" &&
  typeof ObjectId !== "undefined" && ObjectId
) {
  var _findOne = DBCollection.prototype.findOne,
      _slice = Array.prototype.slice;
  DBCollection.prototype.findOne = function() {
    var args = _slice.call(arguments);
    if (args.length > 0 && (typeof args[0] === "string" || args[0] instanceof ObjectId)) {
      args[0] = { _id: args[0] };
    }
    return _findOne.apply(this, args);
  };
}

})();

我最初是DBCollection通过db.myCollection.constructor在Mongo shell中键入来找到对象/类的然后,我findOne通过验证(a)DBCollection是否可全局访问,(b)DBCollection.prototype存在和(c)typeof DBCollection.prototype.findOne === "function"(类似于代码段)来确认其原型是否已定义


编辑:添加了一个逻辑分支,以涵盖基于ObjectId的ID。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法反思Lua中的功能?

来自分类Dev

有没有办法重写此现有功能?

来自分类Dev

有没有办法在JPA中重写实体子类中的ID?

来自分类Dev

有没有办法在openshift 4.3中实现重写?

来自分类Dev

有没有办法定义默认布局?

来自分类Dev

有没有办法让Typescript使用默认参数?

来自分类Dev

有没有办法取消屏幕唤醒功能?

来自分类Dev

有没有办法扭转特定功能的处理?

来自分类Dev

有没有办法指定要覆盖的功能?

来自分类Dev

有没有办法停止已启动的功能?

来自分类Dev

有没有办法在PowerShell脚本中显示所有功能?

来自分类Dev

有没有办法在MySQL中获取自动提交的默认值?

来自分类Dev

有没有办法在GVM中设置默认的Groovy和Grails版本?

来自分类Dev

有没有办法在Apple Watch中隐藏默认活动指示器?

来自分类Dev

有没有办法在Django的单元测试中获取Client()的默认域?

来自分类Dev

有没有办法在CSS中设置默认边框颜色/大小?

来自分类Dev

有没有办法更改组件中的印刷默认设置?

来自分类Dev

有没有办法从Perforce的默认更改列表中删除文件?

来自分类Dev

有没有办法在Windows日历中更改默认的暂停时间?

来自分类Dev

有没有办法在ConEmu中调整默认行高?

来自分类Dev

有没有办法在Apple Watch中隐藏默认活动指示器?

来自分类Dev

有没有办法在Windows终端中更改默认外壳程序?

来自分类Dev

有没有办法在 PCL-PR EXTPGM 中设置默认值?

来自分类Dev

有没有办法更改 Python 中的默认数据类型?

来自分类Dev

有没有办法在django模型的CharField中设置默认值?

来自分类Dev

有没有办法在MongoDB中使用HQL?

来自分类Dev

有没有办法知道MongoDB中是否有更多文档可用于分页?

来自分类Dev

有没有办法从PowerShell中的调用模块作用域访问功能?

来自分类Dev

Aurelia组件。有没有办法在打字稿中访问组件的功能

Related 相关文章

  1. 1

    有没有办法反思Lua中的功能?

  2. 2

    有没有办法重写此现有功能?

  3. 3

    有没有办法在JPA中重写实体子类中的ID?

  4. 4

    有没有办法在openshift 4.3中实现重写?

  5. 5

    有没有办法定义默认布局?

  6. 6

    有没有办法让Typescript使用默认参数?

  7. 7

    有没有办法取消屏幕唤醒功能?

  8. 8

    有没有办法扭转特定功能的处理?

  9. 9

    有没有办法指定要覆盖的功能?

  10. 10

    有没有办法停止已启动的功能?

  11. 11

    有没有办法在PowerShell脚本中显示所有功能?

  12. 12

    有没有办法在MySQL中获取自动提交的默认值?

  13. 13

    有没有办法在GVM中设置默认的Groovy和Grails版本?

  14. 14

    有没有办法在Apple Watch中隐藏默认活动指示器?

  15. 15

    有没有办法在Django的单元测试中获取Client()的默认域?

  16. 16

    有没有办法在CSS中设置默认边框颜色/大小?

  17. 17

    有没有办法更改组件中的印刷默认设置?

  18. 18

    有没有办法从Perforce的默认更改列表中删除文件?

  19. 19

    有没有办法在Windows日历中更改默认的暂停时间?

  20. 20

    有没有办法在ConEmu中调整默认行高?

  21. 21

    有没有办法在Apple Watch中隐藏默认活动指示器?

  22. 22

    有没有办法在Windows终端中更改默认外壳程序?

  23. 23

    有没有办法在 PCL-PR EXTPGM 中设置默认值?

  24. 24

    有没有办法更改 Python 中的默认数据类型?

  25. 25

    有没有办法在django模型的CharField中设置默认值?

  26. 26

    有没有办法在MongoDB中使用HQL?

  27. 27

    有没有办法知道MongoDB中是否有更多文档可用于分页?

  28. 28

    有没有办法从PowerShell中的调用模块作用域访问功能?

  29. 29

    Aurelia组件。有没有办法在打字稿中访问组件的功能

热门标签

归档