当前位置: 首页 > 面试题库 >

Go(golang)与mgo中的MongoDB:如何使用逻辑运算符进行查询?

宣熙云
2023-03-14
问题内容

我想在管道中使用mgo在golang中运行以下查询。

{"key1" : 1,
 "$or" : [{"key2" : 2}, {"key3" : 2}]}

我到处都看过,但是找不到这样的例子。我尝试了许多不同的组合,例如:

...
pipeline := []bson.M{
                     bson.M{    "$match" :  bson.M{ "key1" : 1,  
                                                   "$or" : bson.M{ "key2" : 2, "key3" : 2},
                     }
                     ...
            }

正确编译的,什么也找不到。有任何想法吗?

先感谢您


问题答案:

您的mongo查询可以转换为以下内容:

pipeline := bson.D{
    {"key1", 1},
    {"$or", []interface{}{
        bson.D{{"key2", 2}},
        bson.D{{"key3", 2}},
    }},
}

该查询应等效于mongo控制台中的以下内容:

db.mycollection.find({"key1" : 1, "$or" : [{"key2" : 2}, {"key3" : 2}]})

如果您希望使用无序列图bson.M,则可能是这样的:

pipeline := bson.M{
    "key1": 1,
    "$or": []interface{}{
        bson.M{"key2": 2},
        bson.M{"key3": 2},
    },
}


 类似资料:
  • 我已经尝试了所有的方法,如果你不选择“ST”,它会不断地在while循环中循环。我不知道该怎么办,如果有人能告诉我,那将非常有帮助。我在顶部添加了一些上下文代码;我只需要while循环的帮助。我正在使用循环,因此如果他们没有选择给定的位置,他们必须重新选择。 这是我的密码:

  • 问题内容: 当比较两个字符串时,我被告知不应使用逻辑运算符(==)。我们应该使用String.equals(String)进行比较。但是,我看到以下代码符合最新的JDK(1.6_23)并打印出来。我尝试四处搜寻,但找不到任何参考。从什么时候开始发生的? 问题答案: 您不应该使用它,因为它会做其他事情,然后您认为。 在这种情况下,“ hello”将被保存(在字符串插入中读取),因此与您的搅动相同的是

  • JavaScript 中有三个逻辑运算符:||(或),&&(与),!(非)。 虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。 让我们来详细看一下。 ||(或) 两个竖线符号表示“或”运算符: result = a || b; 在传统的编程中,逻辑或仅能够操作布尔值。如果参与运算的任意一个参数为 true,返回的结果就为 tr

  • 问题内容: 在阅读python中的逻辑运算符时,我遇到了一些表达式: 输出1 输出:5 谁能解释这是如何工作的? 我知道, 操作数 的的 逻辑 运算符是 布尔 问题答案: 有据可查: 两者都短路(例如,如果为 真,则不会评估)。 __ 该文档还指出了被认为 falsy (,,,空序列/映射,…) -一切被认为是 truthy 。 一些例子: 请注意,最后两个如何显示短路行为:不执行第二个语句(将引

  • 问题内容: 运算符和有什么不一样?和运算符|| ?? 而且&和&& ??有什么区别? 谢谢… 问题答案: 主要区别在于,在表达式中,如果为false,则不会进行计算,而在两者中,无论如何都将进行计算。可以说是“ 短路 ”评估。 同样,对于:如果为true,则不会进行评估,而对于两者而言,则无论如何都将被评估。

  • 问题内容: 嗨,我有一个名为“ my_sales”的集合,其字段为product_name,price,sale_date。 我的文档看起来像 我像这样在mongo shell中尝试过 它给出正确的结果。现在我需要使用我尝试过的golang查询同一件事 它给空结果请帮助 问题答案: 氧化镁支持了time.time为BSON日期。 因此,如果您的结构看起来像这样: 然后,您可以像这样查询它: