MongoDB findAndModify(仅当文档不存在时插入)并在插入时设置顺序
标题很好地解释了我想做什么MongoDB findAndModify(仅当文档不存在时插入)并在插入时设置顺序,mongodb,Mongodb,标题很好地解释了我想做什么 仅当文档不存在时插入项目 插入更新序列时(\u id) 插入时返回文档 如果项目确实存在,则返回文档 我一直在看mongo文档 因此,我一直在尝试从中创建我的解决方案: function getNextSequence2(x) { var ret = db.service.findAndModify( { query: { name: x }, update: { $setOnInsert:{ sequence: {
- 仅当文档不存在时插入项目
- 插入更新序列时(\u id)
- 插入时返回文档
- 如果项目确实存在,则返回文档
function getNextSequence2(x) {
var ret = db.service.findAndModify(
{
query: { name: x },
update: { $setOnInsert:{ sequence: { _id: 1 } }},
new: true,
upsert: true
}
);
return ret.inc;
}
update: { $setOnInsert:{ sequence: { _id: 1 } }},
对此
update: { $setOnInsert:{ $inc: { _id: 1 } }},
我得到这个错误:
The dollar ($) prefixed field '$inc' in '$inc' is not valid for storage.
我一直在阅读stackoverflow、mongoDB文档并尝试不同的东西,我仍然不明白我做错了什么
例如,如果我查看此查询:
db.products.find( { qty: { $gt: 25 } } )
从逻辑上讲,我的应该有效吗
请帮我解决这个问题
提前感谢您不能更改
\u id
,因为它是主键,因此是不可变的。该示例(您应该已经阅读过)实际上建议使用一个“counters”集合,其中\u id
用于特定的“counter”,您使用$inc
维护另一个类似“count”的字段。您希望“增量”发生在每次调用上,而不仅仅是在insert上。参考: