【问题标题】:How to query in mongodb programmatically?如何以编程方式在mongodb中查询?
【发布时间】:2018-08-27 14:22:49
【问题描述】:

我想创建这样的代码:

var result = Attributes.find({
    attribute_name : {
    $exist : true,
    $in : [1]
 }
});

但是以编程方式,所以我创建了这样的代码:

var genQuery = '{ "' + by + '" : { "$exists" : true, "$in" : [' + data + ']} }';
var result = Attributes.find(genQuery);

但我得到错误最大调用堆栈

因为 JSON.parse(genQuery) 的结果

{ _id: { '$exists': true, '$in': [ 1 ] } }

如何以编程方式在mongodb中查询?

【问题讨论】:

    标签: json mongodb meteor


    【解决方案1】:

    您声明的genQuery 变量是一个字符串,但您不能在find() 函数中将字符串作为选择器或修饰符传递。 您应该创建一个对象以使其工作:

    var genQuery = {};
    //use this notation to declare a new object key depending on a variable
    genQuery[by] = {
      $exists: true, 
      $in: [1]
    };
    
    var result = Attributes.find(genQuery);
    

    【讨论】:

    • 我在现有的收藏中测试了它,它应该可以工作,你有什么错误吗?
    • 还是一样的“最大调用栈”
    • 当我在控制台记录它时,就像这样:{ _id: { '$exists': true, '$in': [ 1 ] } } there '' around $exist
    • 移除 $exists 和 $in 的 ' ',它们是对象键而不是字符串。
    • 正如我在回答中所展示的,您不需要 JSON.parse,只需直接创建一个对象,而不是编写某种“类似字符串的对象”然后解析它。
    猜你喜欢
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多