我有一个聊天模式,其中的字段如下:
[{
"text" : "xyz",
"userId" :ObjectId("1") // mongoId which reference User schema
"count" : 1
},
{
"text" : "xyz-1",
"userId" :ObjectId("2") // mongoId which reference User schema
"count" : 1
},
{
"text" : "xyz-2",
"userId" :ObjectId("1") // mongoId which reference User schema
"count" : 2
}]我想在这里做的是,每当我在聊天模式中插入一个新文档时,它都会检查userId是否已经是他们的,如果是,那么就用增加计数的方式插入文档,否则从'1‘开始计数。因此,如果我插入一个带有userID '1‘的新文档,那么按照上面的例子,这个时间计数应该是'3’。
编辑:问这个问题的唯一目的是,我可以在没有额外mongo调用的情况下处理这个场景吗?
发布于 2019-03-18 18:38:36
试一下这个
function getNextSequence(id) {
var ret = db.collection.aggregate([
{$match:{userId: id}}
]).toArray();
if(ret.length) {
return ++ret[ret.length-1].count;
}
else return 1
}
db.collection.insert(
{
name: "Sarah C.",
"userId" : ObjectId("5c74ddb8fc3e023d9ab588b8"),
count:getNextSequence(ObjectId("5c74ddb8fc3e023d9ab588b8"))
}) https://stackoverflow.com/questions/55217657
复制相似问题