MongoDB findAndModify(仅在文档不存在时插入)并在插入时设置序列

时间:2016-03-08 07:20:20

标签: mongodb

标题几乎解释了我想做什么

  • 仅在文档不存在时插入项目
  • 关于插入更新序列(_id)
  • 返回插入文档
  • 如果项目确实存在则返回文档

我一直在阅读mongo docs Create an Auto-Increment Sequence Field

所以我一直试图从中创建我的解决方案:

function getNextSequence2(x) {
 var ret = db.service.findAndModify(
      {
        query: { name: x },
        update: { $setOnInsert:{ sequence: { _id: 1 } }},
        new: true,
        upsert: true
      }
    );
   return ret.inc;
}
  1. “插入”工作并返回文档 但序列未更新
  2. 如果文档存在: 正确 文档返回
  3. 当我添加序列并改变它时,问题出现了:

     update: { $setOnInsert:{ sequence: { _id: 1 } }},
    

    到此

      update: { $setOnInsert:{ $inc: { _id: 1 } }},
    

    我收到此错误:

    The dollar ($) prefixed field '$inc' in '$inc' is not valid for storage.
    

    我一直在阅读堆栈溢出,mongoDB文档并尝试不同的东西,我仍然不明白我做错了什么。

    例如,如果我查看此查询:

    db.products.find( { qty: { $gt: 25 } } )
    

    逻辑上我应该工作吗?

    请帮我解决问题。

    提前致谢

0 个答案:

没有答案