未知运算符:mgo中的“$或”

时间:2017-11-09 08:55:32

标签: go mgo

我在下面的代码中遇到unknown operator: $or错误,无法找出原因。

vc := &storers.VCategory{}

err = mndb.
    C("virtualcategoryprototypes").
    Find(bson.M{
        "children":   nil,
        "deleted_by": nil,
        "indexCycleNo": bson.M{"$or": []bson.M{
            bson.M{"$exists": false},
            bson.M{"$lt": cycle}}}}).
    One(vc)

1 个答案:

答案 0 :(得分:5)

$or表达式是其他条件的序列(数组),这些条件本身有效(并且将使用逻辑OR连接进行评估),$or表达式的结果将是逻辑AND与同一级别的其他条件连接。

因此,您必须将$or运算符向上移动一级,其值必须是切片或数组,$or的元素将在您的indexCycleNo: {$exists: false}和{{{{}}中1}}:

indexCycleNo: {$lt: cycle}