MongoDB:$addToSet Meteor中的重复结果回调
MongoDB: $addToSet duplicate result callback in Meteor
有很多$addToSet主题,但经过一个小时的搜索,我仍然不知道如何在流星服务器端javascript代码中评估$addToSet是否向数组添加了新元素或是重复匹配。
我发现的最接近的一个是如何检查Mongo的$addToSet是否重复,但我不知道如何在流星中获得db对象。
正如在其他文章中所写的,作为更新方法最后一个参数的回调函数总是返回1,并且它总是成功的,无论它是重复的还是不同的元素。
如果目前没有解决方案,我想知道是否有其他方法可以检查嵌套数组(在一个特定集合内)中的特定元素。一个简单的真/假结果信息就足够了。
编辑:
好的,我设法让批量更新现在使用以下行:
var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;
var col = db.collection("posts");
var batch = col.initializeOrderedBulkOp();
batch.find({_id: postid}).upsert().updateOne({"$addToSet": ...});
batch.execute(function(err, result) {
if (err) throw err;
console.log("RESULT: ", JSON.stringify(result));
//db.close();
});</code>
$addToSet适用于此实现,但执行过程中返回的result
对象始终相同:
RESULT: {
"ok":1,
"writeErrors":[],
"writeConcernErrors":[],
"nInserted":0,
"nUpserted":0,
"nMatched":1,
"nModified":null,
"nRemoved":0,
"upserted":[]
}
感兴趣的值nModified
对于更新和(发现重复)跳过都保持null
。
有什么想法吗?
如果我重新表述这个问题,你会想知道你要插入的内容是否已经存在。
为什么不在尝试插入之前简单地查询对象?
如果你有一个集合(数组),你可以简单地做
db.collection.find({array_key: object_to_find_in_array})
看看它是返回一个对象还是什么都不返回。然后根据需要进行更新。
相关文章:
- 将web服务回调的结果绑定到Javascript中的调用函数
- 返回循环中调用的回调结果的串联
- 从回调函数返回 AJAX 结果
- MongoDB:$addToSet Meteor中的重复结果回调
- node.js+MySQL;JSON结果-回调问题&没有响应客户端
- 如何通过回调访问nodejs中的mongodb计数结果
- 而循环和回调返回不同的结果
- 如何显示查询回调数据结果仅从开始
- Node.JS- R,Python大量计算识别回调何时返回并存储该结果
- 咖啡脚本化的 ajax 调用结果在实际成功时失败回调
- Meteor.js HTTP.get 获取 JSON 引号并解析结果似乎包含一个回调函数
- 如何使用异步并行将所有回调结果合并到最终回调中
- 根据多个回调结果的结果执行最终回调
- 我是否需要为每个具有等待结果回调的方法关闭
- 我想要一些在另一个回调函数内部的结果
- 使用 AJAX 回调更新挖空可观察数组会生成随机排序的结果
- 为什么我在 JavaScript 中的回调不适用于异步结果
- 为什么异步并行回调会返回意外结果
- 承诺链接:在next-then回调中使用上一个承诺的结果
- Node.js回调错误和结果澄清