当前位置: 首页 > 知识库问答 >
问题:

在Camel中使用动态选择器查询MongoDB

糜淇
2023-03-14

我在这里找到了一个解决方案:如何使用ApacheCamel和MongoDB创建动态equals查询?

但这看起来需要做很多工作。难道Camel没有更简单的方法将值传递给MongoDB查询吗?我希望我们能传递Mongo使用的实际find({})语言。

以下是我的工作,一些日志显示了它在做什么:

.setHeader(MongoDbConstants.CRITERIA, new Expression() {
    @Override
    public <T> T evaluate(Exchange exchange, Class<T> type) {
        Long drRequestId = exchange.getIn().getHeader("orderid", Long.class);

        Bson equalsClause = Filters.eq("id", drRequestId);



        return exchange.getContext().getTypeConverter().convertTo(type, equalsClause);
    };
})
.log(MongoDbConstants.CRITERIA)
.log("${headers.CamelMongoDbCriteria}")
.to("mongodb:mongo?database={{spring.data.mongodb.database}}&collection=ftx_orders&operation=findOneByQuery")

共有1个答案

郁和通
2023-03-14

你用${body.id}试过了吗?

此外,您还可以通过使用

exchange.getIn().setHeader("id","value");

然后用你上面提到的方法

.setHeader(MongoDbConstants.CRITERIA, constant(Filters.eq("name", simple("${header.id}"))))
 类似资料:
  • 从表A中选择columnList=>Id1,Id2,Id3,Id4,ID5。 使用结果,我需要从表B中查询。 以下是案例 就像这个案子会变大一样。我想知道如何在Spring Data JPA中实现这一点。它类似于Spring Data JPA中的动态投影。 注意:存储在TableA中的列名在TableB中使用。 理由:如果我能做到这一点,它将很容易拉出数据,这只是我需要的。 我们能使用Criter

  • 我试图使用jpa组件来选择从标题中获取的id。我在文档中找到了一个使用本机select查询的示例: 我试图用${header.id}替换“1”常量: 这似乎不管用,我明白了: 也许还有别的方法可以让它发挥作用?

  • 问题内容: 我有一张表,默认有20列 这20列名为D1 D2 D3 … D20,现在带有选择查询,我想动态添加其他列。例如,对于D21 D22 … D31,我如何编写查询以动态递增添加此列值..最大限制为31,请帮助 缺省表列 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 现在我想在连续性将列添加到D2

  • 问题内容: 我正在使用c#中的linq查询遇到一个问题,我的linq查询如下 我有一个 perfmon 类,它包含诸如(id,counter1,counter2 …)之类的属性,现在有20多个计数器,我已经开发了sql查询以根据参数中传递的计数器名称选择id和计数器,例如,如果我已经传递了counter1,它将仅选择id,counter1(重命名为counter) 如果我将在这里使用开关盒,那么它

  • 问题内容: 我有一个数据库字段名称调用,我正在尝试使用如下所示的变量名称来选择它: 显然,SQL将解释为字符串,而不是数据库的字段,我如何以这种方式将其识别为字段名而不是字符串,可能没有任何select或if语句。 问题答案: 试试这个: 您必须组成一个动态查询,并使用 要在事物的“动态”方面添加更多内容,请使用存储过程。请参见此处的示例: http://www.marten-online.com

  • 描述 (Description) 您还可以使用HTML到App方法创建动态选择器模式。 它使用两个参数 - pickerHTML - 它包含pickerHTML模态的字符串元素。 removeOnClose - 它包含布尔值,当您关闭Picker时,它将从DOM中删除。 默认情况下,它包含真值。 例子 (Example) 以下示例演示了在Framework7中使用动态选择器模式 - <!DOCTY