Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb使用$position将元素插入数组_Mongodb - Fatal编程技术网

Mongodb使用$position将元素插入数组

Mongodb使用$position将元素插入数组,mongodb,Mongodb,我正在使用节点v9.10.1连接mongodb版本3.6.3。我使用$position将一个元素插入到一个现有记录中,因为我需要根据位置对数组进行排序。元素随机到达服务器。我的问题是,即使在使用$position之后,元素也不会插入到所述位置 我的文档结构如下 {_id:1,array;[]} let mongo = require('mongodb') let client = mongo.MongoClient; let pos = [0, 6, 3, 4, 5, 1, 2]; clien

我正在使用节点v9.10.1连接mongodb版本3.6.3。我使用$position将一个元素插入到一个现有记录中,因为我需要根据位置对数组进行排序。元素随机到达服务器。我的问题是,即使在使用$position之后,元素也不会插入到所述位置 我的文档结构如下

{_id:1,array;[]}
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) {
            })
        }
    }
})
在节点中测试相同的代码如下

{_id:1,array;[]}
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) {
            })
        }
    }
})
让mongo=require('mongodb'))
让client=mongo.MongoClient;
设pos=[0,6,3,4,5,1,2];
客户端连接(“mongodb://localhost/test,函数(错误,mdb){
如果(!err){
let collection=mdb.collection('docs');
for(设i=0;i<7;i++){
设位置=位置[i];
log(“newindex”,newindex,“i”,i);
let元素={
“id”:我,
“createdOn”:新日期(),
"内容":一,,
“位置”:位置
};
让doc={'push':{'array':{'each':[element],'$position':position};
update({“\u id”:1},doc,function(err,obj){
})
}
}
})
运行此操作后,您会发现将元素插入到数组中的位置不在所需的位置。
这是mongo错误还是我的错误?

来自文档:“如果的值大于或等于数组的长度,$position修饰符无效,$push将元素添加到数组的末尾。”是的,我读过同样的内容,但有什么办法吗?当然,在本地对它们进行预排序,然后使用单个更新将排序后的数组推送到文档中。