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

Javascript 如何在Meteor中的Mongo查询中使用变量作为字段名?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,如何在Meteor应用程序中的Mongo查询中使用变量作为字段名 这里有一个例子 这将在将子项的父id的集合名称大写后运行“查找我的请求控制器”集合。子项是用户字段 正如您所看到的,我的控制器是集合项的变量名,它允许我使用一行代码来查找控制器/集合的子项,但我需要能够将子字段名设置为变量。在上面的例子中,这将是用户,但我希望它是一个变量名 我试过这个,但不起作用 window[Meteor.request.controller.capitalise()]["find"]({ _id: Sessi

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

这里有一个例子

这将在将子项的父id的集合名称大写后运行“查找我的请求控制器”集合。子项是用户字段

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

我试过这个,但不起作用

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

返回用户


有什么想法吗?如果我能在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();

这能奏效吗?

是的,效果很好!我甚至能够想出如何使用它的$pull。虽然$addToSet还不能让它工作。这使我的代码占用空间减少了大约80%!
Session.get('child_collection_name').decapitalise()
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();