2017-01-13 9 views
0

Я пытаюсь обновить дату вступления в силу в моей коллекции mongoDB с текущей датой. Я хочу обновить все документы в коллекции, где Дата вступления в силу равна нулю.Можете ли вы обновить все документы Монго в коллекции сразу в Муле?

Как вы настраиваете трансформатор для этого? В информационном сообщении с информацией о запросе запроса говорится об идентификаторе, и поле элемента похоже, что ему нужна полезная нагрузка, содержащая документ, который заменит обновляемый. Я просто хочу обновить одно поле и в настоящее время получить сообщение с моим запросом, но он работает в командной строке mongoDB.

Это мой запрос, который я хочу реализовать:

db.stores.update({"EffectiveEndDateTime" : null}, {$set : {"EffectiveEndDateTime" : "2017-01-13T18:56:55.257Z"}}) 

Мой XML настроить для Монго в Mule до сих пор:

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:mongo="http://www.mulesoft.org/schema/mule/mongo" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:json="http://www.mulesoft.org/schema/mule/json" 
    xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" 
    xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/mongo http://www.mulesoft.org/schema/mule/mongo/current/mule-mongo.xsd"> 
    <mongo:config name="Mongo_DB__Configuration" username="${mongodb.username}" password="${mongodb.password}" database="${mongodb.database}" host="${mongodb.host}" doc:name="Mongo DB: Configuration"/> 
    <flow name="deactivateCurrentDocumentsFlow"> 
     <http:listener config-ref="httpListenerConfig" path="/mongo" allowedMethods="POST" doc:name="HTTP"/> 
     <mongo:update-documents-by-function config-ref="Mongo_DB__Configuration" collection="stores" function="$set : {&quot;EffectiveEndDateTime&quot;: &quot;2017-01-13T17:51:08.153Z&quot; }" doc:name="Mongo DB"/> 
     <object-to-string-transformer doc:name="Object to String"/> 
     <logger level="INFO" doc:name="Logger"/> 
    </flow> 
</mule> 

Ошибка я получаю:

Message    : Failed to invoke updateDocumentsByFunction. 
Payload    : {NullPayload} 
Payload Type   : org.mule.transport.NullPayload 
Element    : /deactivateCurrentDocumentsFlow/processors/0 @ test -------------------------------------------------------------------------------- 
Root Exception stack trace: 
com.mongodb.MongoWriteException: Unknown modifier: $set : {"EffectiveEndDateTime": "2017-01-13T17:51:08.153Z" } 

Спасибо

ответ

1

Вы должны использовать обновленные документы по варианту Functions.

+0

Мне не удалось заставить вышеуказанное работать. Я добавил свой код и попробовал несколько вариантов, но пока не повезло. Можете ли вы увидеть, где я ошибаюсь? Я использую соединитель mongoDB 4.1 – user3165854

+0

Его 'update-documents-by-functions' не' update-documents-by-function'. Посмотрите, поможет ли это, и я пока буду смотреть. То же самое для аргументов. Перейдите из 'function' в' functions' – Veeram

+0

Удалось заставить его работать с этим user3165854