Mongodb查询 - 检查现有文档

时间:2018-04-16 14:36:42

标签: ruby mongodb mongodb-query

是否可以在Ruby中编写代码,以便在我的数据库中已存在一个文档来对新文档和已存在的文档进行聚合,如果它不存在,则将新文档添加到数据库中?

我知道如何进行聚合,但在这种情况下我不知道如何使用$ exists。

要更新现有文档,我已经创建了,但我认为如果我想推送一个完整的哈希,我就无法使用它:

var navBarBackgroundImage: UIImage?
var navBarShadowImage: UIImage?

override func viewDidLoad() {
    super.viewDidLoad()
    navBarBackgroundImage = navigationController?.navigationBar.backgroundImage(for: .default)
    navBarShadowImage = navigationController?.navigationBar.shadowImage
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if let navBarBackgroundImage = navBarBackgroundImage {
        navigationController?.navigationBar.setBackgroundImage(navBarBackgroundImage, for: .default)
    }
    if let navBarShadowImage = navBarShadowImage {
        navigationController?.navigationBar.shadowImage = navBarShadowImage
    }
    navigationController?.navigationBar.isTranslucent = false
    navigationController?.navigationBar.barTintColor = .white
}

1 个答案:

答案 0 :(得分:1)

在更新查询中使用upsert: true选项。

来自mongodb手册:

  

Upsert:如果设置为true,则在没有文档与查询条件匹配时创建新文档。默认值为false,如果未找到匹配项,则不会插入新文档。

您的查询可能如下所示:

db.coll.update({"title" : "Document"}, {$push: {
    "comments":{
        "user":'user2',
        "message": 'My second comment',
        "dateCreated": new Date(2013,11,10,2,35),
        "like": 0
        }
    },
    {upsert: true}
})