MongoEngine Javascript


MongoEngine 的 QuerySet 对象有 exec_js() 允许在 MongoDB 服务器上执行 Javascript 函数的方法。该函数处理以下参数:

exec_js(code, *field_names, **options)

Where,

  • code :一个包含要执行的Javascript代码的字符串

  • fields :在你的函数中使用,会作为参数传递

  • options :你希望函数可用的选项(在Javascript中通过options对象访问)

此外,函数的作用域还提供了更多变量,如下所示:

  • 收藏 :Document类对应的集合名称。这应该用于在 Javascript 代码中从 db 获取 Collection 对象。

  • query :QuerySet对象已经生成的查询;传递给 Javascript 函数中 Collection 对象的 find() 方法。

  • options :一个包含传递给exec_js()的关键字参数的对象。

请注意,MongoEngine 文档类中的属性可能在数据库中使用不同的名称(使用 db_field 关键字参数设置为 Field 构造函数)。

class BlogPost(Document):
title = StringField(db_field='doctitle')

为此,存在一种将 MongoEngine 字段属性替换为 Javascript 代码中的数据库字段名称的机制。

访问集合对象上的字段时,请使用方括号表示法,并在 MongoEngine 字段名称前加上波浪号 (~) 符号。波浪号后面的字段名称将被转换为数据库中使用的名称。

document': doc[~title];

请注意,当 Javascript 代码引用嵌入文档上的字段时,应在嵌入文档上的字段名称之前使用 EmbeddedDocumentField 的名称,后跟一个点。