未知运算符:mgo 中的“$or”
unknown operator: "$or" in 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)
一个$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)
我在下面的代码中遇到 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)
一个$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)