Mongodb使用$position将元素插入数组
我正在使用节点v9.10.1连接mongodb版本3.6.3。我使用$position将一个元素插入到一个现有记录中,因为我需要根据位置对数组进行排序。元素随机到达服务器。我的问题是,即使在使用$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
{_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将元素添加到数组的末尾。”是的,我读过同样的内容,但有什么办法吗?当然,在本地对它们进行预排序,然后使用单个更新将排序后的数组推送到文档中。