【问题标题】:unknown operator: "$or" in mgo未知运算符:mgo 中的“$or”
【发布时间】:2017-11-09 08:55:32
【问题描述】:

下面的代码出现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)

【问题讨论】:

    标签: go mgo


    【解决方案1】:

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

    所以你必须将$or 运算符上移一级,它的值必须是切片或数组,而$or 的元素将在你的情况下为indexCycleNo: {$exists: false}indexCycleNo: {$lt: cycle}

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

    【讨论】:

    • 这样一个简单的错误,我在这里尝试了 3 个多小时。非常感谢。
    猜你喜欢
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2010-10-23
    • 2016-07-08
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多