【问题标题】:Meteor collection filtering collection流星收集过滤收集
【发布时间】:2015-07-22 13:49:33
【问题描述】:

我有四个对象的集合

[obj1, obj2, obj3, obj4]

什么是通过单个标志实现过滤器逻辑的好方法,当它为真时,我得到

[obj1, obj2 obj3]

如果它是假的,我会得到

[obj1, obj2, obj4]

我想了很长时间,但我无法仅用一个标志想出一个好的解决方案。


我的公寓是学生 = true/false

这是我尝试过的

obj1 = {};
obj2 = {};
obj3 = {student: true};
obj4 = {student: false};

var studentFlag; // Set this flag

Collection.find({$or: [{student: {$exists: false}}, {student: studentFlag}]}).fetch();

我期待当 studentFlag 为真时,我的查询给我 obj1、obj2、obj3,当它为假时,我得到 obj1、obj2、obj4。但我的查询以无效的选择器结束

【问题讨论】:

  • 没有足够的信息来回答这个问题。物体是什么样子的?国旗是如何设置的?这是在模板中吗?你试过什么?
  • @DavidWeldon 我更新了描述
  • 你让studentFlag = true;在任何地方还是未初始化?
  • @Sindis 它未初始化,这就是我期待 student: {$exists: false} 给我 obj1 和 obj2 的地方
  • 设置了 studentFlag 效果好吗?可能 Mongo 查询无法消化没有值的变量

标签: javascript mongodb meteor


【解决方案1】:

如果您的标志为 true 或未设置,您只需执行以下操作:

Collection.find({student: true}).fetch()

Collection.find({student: {$ne: true}}).fetch() // not true or unitialized

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2017-11-05
    • 2016-04-12
    相关资源
    最近更新 更多