MongoDB Stitch - Как сохранить тип данных в int при уменьшении с обновлением? - PullRequest
0 голосов
/ 11 февраля 2020

Я использую функцию стежка mongodb, у меня есть две коллекции, такие как сообщества и сообщения. когда я вставляю новый документ в коллекцию публикаций, нам нужно увеличить +1 summary.postCount в сообществе collection.when, когда я изменил статус на удаленный в коллекции публикаций, нам нужно уменьшить -1 summary.postCount в коллекции сообществ. Я пишу функцию следующим образом.

if(changeEvent.operationType == 'insert') {
context.functions.execute('addEventBySystem', 
  {
    community: changeEvent.fullDocument.community,
    channel: changeEvent.fullDocument.channel,
    origin: changeEvent.fullDocument.lastUpdatedBy,
    target: "",
    type: 'created',
    status: 'completed'
  });
if(changeEvent.fullDocument.type == 'article' || changeEvent.fullDocument.type == 'poll' ) {
  context.functions.execute("notifyTopic", "article-created", changeEvent.fullDocument);
  var communities = context.services.get("mongodb-atlas").db("utilo").collection("communities");
  communities.updateOne(
    {_id:changeEvent.fullDocument.community},
    {$inc: {"summary.postCount":1}, $currentDate: {"summary.lastActivity":true} }
  )
} else if(changeEvent.operationType == 'update') {
if(changeEvent.fullDocument.status == "deleted" && changeEvent.fullDocument.type == 'article' || 
changeEvent.fullDocument.type == 'poll') {
  var communities = context.services.get("mongodb-atlas").db("utilo").collection("communities");
  communities.updateOne(
    {_id:changeEvent.fullDocument.community},
    {$inc: {"summary.postCount":-1}, $currentDate: {"summary.lastActivity":true} }
  )
}

Теперь, во время декремента, тип данных summary.postCount изменился с int32 на удвоенный. Я пытался NumberInt также, но бесполезно. Как сохранить тип данных int только после приращения / уменьшения?

Примечание. В сводке сообществ, поданной как эта сводка: {postCount: 1, lastActivity: date}

1 Ответ

0 голосов
/ 26 февраля 2020

Здесь определенно происходит какая-то ошибка. Я смог обойти это, выполнив {$inc: {"x": Number(1)}}. Это все равно изменит его на int64, но это как минимум ближе, чем double.

...