未知运算符:"$或;在mgo中

未知运算符:"$或;在mgo中,go,mgo,Go,Mgo,下面的代码出现未知运算符:$或错误,无法找出原因 vc := &storers.VCategory{} err = mndb. C("virtualcategoryprototypes"). Find(bson.M{ "children": nil, "deleted_by": nil, "indexCycleNo": bson.M{"$or": []bson.M{ bson.M{"$exist

下面的代码出现
未知运算符:$或
错误,无法找出原因

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)

$或
表达式是其他条件的一系列(数组),这些条件本身是有效的(并且将使用逻辑或连接进行计算),
$或
表达式的结果将与同一级别的其他条件进行逻辑和连接

因此,您必须将
$或
运算符向上移动一级,其值必须是片或数组,
$或
的元素将在您的情况下
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个多小时试图找出答案。非常感谢你。