【发布时间】:2020-02-10 15:34:44
【问题描述】:
我在mongodb中使用stitch。在stitch中,我编写了一个nodejs函数用于递增和递减目的。
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":NumberInt(1)}, $currentDate: {"summary.lastActivity":true} }
)
} else if (changeEvent.fullDocument.type == 'comment') {
context.functions.execute("notifyTopic", "comment-created", changeEvent.fullDocument);
var posts = context.services.get("mongodb-atlas").db("utilo").collection("posts");
posts.updateOne(
{_id:changeEvent.fullDocument.root},
{$inc: {"summary.commentCount":1}, $currentDate: {"summary.lastActivity":true} }
)
现在我已经执行了这个函数,summary.postCount值从int转换为Double,我usnig NumberInt也是这样的。
posts.updateOne(
{_id:changeEvent.fullDocument.root},
{$inc: {"summary.commentCount":NumberInt(1)}, $currentDate: {"summary.lastActivity":true} }
)
communities.updateOne(
{_id:changeEvent.fullDocument.community},
{$inc: {"summary.postCount":NumberInt(-1)}, $currentDate: {"summary.lastActivity":true} }
)
这不是工作事件,我也提到了“summary.$.postCount”,但没有用。
我只需要增量/减量值和数据类型整数。请帮我解决问题。提前致谢。
【问题讨论】:
-
考虑这份文件:
{ a: NumberInt(5), b: 50 }。b的字段值,如果默认为double。如果您从 Mongo Shell:db.collection.updateOne( { }, { $inc: { a: NumberInt(1), b: NumberInt(1) } } )执行此操作,a和b的值都增加 1。a(整数)和b(双精度)的数据类型将保持不变。 -
@prasad 类似这样的文档摘要:{postCount:1, lastActivity: date} 数据类型是 Int,但是当我执行上述代码时,数据类型从 int 转换为 double
-
您可以检查特定文档并查看更新前后的内容吗?你是如何检查类型是否为
int的? -
@prasad 我已经检查了 mongodb 地图集。在缝合中,我编写了函数
-
@prasad NumberInt 在该函数中不被接受,当我放入 NumberInt 时,该函数中不会发生递增/递减
标签: node.js mongodb mongodb-query mongodb-stitch