【问题标题】:Mongo Update of Array Query using UpsertMongo 使用 Upsert 更新数组查询
【发布时间】:2016-09-13 09:54:59
【问题描述】:

给定

  1. menuItems 是一个列表 ['foo', 'bar', 'fooz', 'ball'] 和
  2. menudb 集合有 3 条记录:'foo'、'bar'、'fooz'

当我跑步时

menudb.update({"_id" : {"$in": menuItems}}, {"$addToSet": {"staleCount": 100}}, upsert=True)

它没有创建一个名为“ball”的新记录,而是创建一个名为“ObjectId("57d730777bc6a465c9124111")”的新记录。

有没有办法让新创建的记录的'_id'成为列表中的那个?

=谢谢

【问题讨论】:

    标签: python mongodb


    【解决方案1】:

    如果您不想在 menudb 集合中添加新项目,则可以删除 upsert。我好像你的 id 是 objectId 而不是 string。

    https://docs.mongodb.com/manual/reference/operator/query/in/

    您可以验证 _id foo 是否在集合中退出 menudb.update({"_id" : "foo"}, {"$addToSet": {"staleCount": 100})

    【讨论】:

    • 我确实希望创建新项目,但 '_id' 为 'ball'
    • 运行以下验证集合中的 _id 是否正确。 D b。 menudb.find() 输出会将 _id 显示为字符串或对象...例如{“_id”:ObjectId(“5773e26e27819b2bf0479460”),“姓名”:“a”,“电子邮件”:“a@a.com”}>
    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    • 2011-03-19
    • 2012-11-15
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多