node.js - mongo中如何批次更新一組數據,當數組中的資料不存在的時候進行插入操作?
淡淡烟草味
淡淡烟草味 2017-05-24 11:35:41
0
2
833

例如我在mongo有一個標籤表,資料模型如下

    {
        name: String,
        hot: {
            type: Number,
            default: 0
        },
        create_at: {
            type: Date,
            default: Date.now
        }
    }

現在我有一個陣列的標籤名,例如['mongoDB','node.js','mysql'],
我想批量更新熱度,如果我發現沒有這個標籤的時候插入,實作像

mongo.tags.update({
    name:{
        $in:['mongoDB','node.js','mysql']
        }
},{
    $inc:{
        hot:1
    }
},{
    upsert: true,
    multi:true
})

這樣的操作,但是現在我執行這個指令的時候都是新增了一個空的資料

現在我實作的方法就是先做一次查詢,能查詢到的更新,不能查詢到的進行插入操作,但是這樣的操作需要從程式碼中遍歷多次標籤數組,性能不好,想請教下各位大牛有沒有更好的解決方法。

淡淡烟草味
淡淡烟草味

全部回覆(2)
左手右手慢动作

1、您的update operation的語句沒問題;

2、您所說的新增一個空的數據,是因為沒有查找到符合條件的document,並且設定upsert為true,所以插入了一個包含feild hot的document。

不妨檢查一下自己的collection的document情形,再試試。您的update operation沒有發現問題。

供參考。

Love MongoDB! Have fun!


2017MongoDB中文社群北京用戶群組大會在即!掃碼報名中!

某草草

mongodb裡面用upsert應該可以實作
upsert({},{},true) true表示沒有就寫入,有就更新;
可以參考官方支援萌闊論壇:
http://forum.foxera.com/ mongo...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!