如何在 Meteor 中的 Mongo 查询中使用变量作为字段名称

How do I use a variable as a field name in a Mongo query in Meteor?

本文关键字:变量 字段 Meteor 中的 查询 Mongo      更新时间:2023-09-26

我将如何在 Meteor 应用程序的 Mongo 查询中使用变量作为字段名称。

下面是一个示例...

这会在将

子项父 ID 的集合名称大写后,在我的请求控制器集合上运行查找。 子项是用户字段。

window[Meteor.request.controller.capitalise()]["find"]({ _id: Session.get('parent_id'), users: params.child }).count()
如您所见,我的控制器是集合项的变量名称,

它允许我使用一行代码来查找控制器/集合的子项,但我需要能够将子字段名称设置为变量。 在上面的例子中,这将是用户,但我希望它是一个变量名。

我已经试过了,但它不起作用。

window[Meteor.request.controller.capitalise()]["find"]({ _id: Session.get('parent_id'), [Session.get('child_collection_name').decapitalise()]: params.child }).count()

哪里

Session.get('child_collection_name').decapitalise()

返回用户

有什么想法吗? 如果我能弄清楚如何在 meteor 的 mongo 查询中使用变量名称,它将大大减少我的代码占用空间。

查询只是一个 JavaScript 对象,因此您可以逐步构建它:

var query = { _id: Session.get('parent_id') };
var myCustomField = Session.get('child_collection_name').decapitalise();
var myCustomValue = params.child;
query[myCustomField] = myCustomValue;
var count = SomeCollection.find(query).count();

这能解决问题吗?