Home:ALL Converter>Mongodb inserting element into array using $position

Mongodb inserting element into array using $position

Ask Time:2018-08-01T20:52:40         Author:Kaushal

Json Formatter

I am connecting to mongodb version 3.6.3 using node v9.10.1. I am inserting an element into an existing record with an array using the $position as i need to keep the array sorted based on the position. The elements arrive randomly on the server. My problem is even after using the $position, the elements are not inserted at the said position My document structure is as follows

{_id:1,array;[]}

The code to test the same in node is as follows

let mongo = require('mongodb')
let client = mongo.MongoClient;
let pos = [0, 6, 3, 4, 5, 1, 2];
client.connect("mongodb://localhost/test", function (err, mdb) {
    if (!err) {
        let collection = mdb.collection('docs');
        for (let i = 0; i < 7; i++) {
            let position = pos[i];
            console.log("newindex ", newindex, " i ", i);
            let element = {
                "id": i,
                "createdOn": new Date(),
                "content": i,
                "pos": position
            };
            let doc = { '$push': { 'array': { '$each': [element], '$position': position } } };
            collection.update({ "_id": 1 }, doc, function (err, obj) {
            })
        }
    }
})

After running this you would find the insertions of the element into array is not at the desired positions. Is it a mongo error or mine?

Author:Kaushal,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/51633810/mongodb-inserting-element-into-array-using-position
yy