sql >> データベース >  >> NoSQL >> MongoDB

MongoDB-自動インクリメント機能を使用してレコードを挿入する方法

    $ locationに_idフィールドを追加する必要があります。また、_idにはidを含める必要があります。例:

    function add_playbook_history_record($location)
    {
            $m = new MongoClient("mongodb://10.1.1.111:27017");
            $db = $m->testdb;
            $collection = $db->testcollection;
            $location['_id'] = getNextSequence('playhistid')
            $cursor = $collection->insert($location);
    }
    

    私の推奨事項:findAndModifyにアップサートを追加する

    それはあなたのために働きます:

        function getNextSequence($name)
        {
            $m = new MongoClient("mongodb://10.1.1.111:27017"); // In a real project, you do not need all the time to re-create the connection
            $db = $m->testdb;
            $collection = $db->counters;
            $result =  $collection->findAndModify(
                ['_id' => $name],
                ['$inc' => ['seq' => 1]],
                ['seq' => true],
                ['new' => true, 'upsert' => true]
            );
            if (isset($result['seq']))
            {
                return $result['seq'];
            }
            else
            {
                return false;
            }
        }
    

    実際のプロジェクトでは、接続を再作成するために常に必要なわけではありません

    MongoDatabase(このパターンシングルトン)を作成できます

    class MongoDatabase{
        private function __construct(){}
        public static function getInstance(){...} // return MongoClient
    } 
    

    必要なメソッドを呼び出す

    MongoDatabase::getInstance()->selectCollection('counters')->findAndModify(...)
    


    1. マングースでObjectIdを生成するにはどうすればよいですか?

    2. 設定されたデータベースと同じ名前の空のMongoデータベースを削除するにはどうすればよいですか?

    3. フォーム送信後、NodeJSから同じhtmlページにデータを送り返します

    4. node.jssetTimeoutの戻り値をredisに保存する