gpt4 book ai didi

javascript - 插入数组?

转载 作者:行者123 更新时间:2023-12-03 11:52:31 24 4
gpt4 key购买 nike

我正在尝试在数组中的特定索引处插入项目,该索引可能为空,也可能不为空。例如,假设我的 mongoDb 集合中有以下文档:

{
title: "abe",
questions: []
}

我想做一些事情,比如将数组中的第五个元素设置为特定值。我正在使用 mongo db 命令行,并且能够执行以下操作:

> mytest = []
[ ]
> mytest[4] = 'test'
test
> mytest
[ undefined, undefined, undefined, undefined, "test" ]

这基本上就是我想要的,但是当我尝试从我的node.js代码中执行此操作时,我得到了奇怪的结果(奇怪的是,项目不在正确的索引中)。代码如下:

Mongoose 模式定义:

mongoose = require("mongoose")
Schema = mongoose.Schema

surveySchema = new Schema
title: String
questions: [
type: Schema.Types.ObjectId
ref: 'Question'
]

执行更新的代码:

surveys.update  {id: doc.survey_id}, 
{
$push: {
questions: {
$each: [doc._id],
$position: doc.sort_order
}
}
},
{upsert:false, multi:true},
callback

上面的代码是在异步循环中执行的,因此最后一个项目可能会插入到第一个项目之前,依此类推。

任何人都可以看到项目无法插入正确索引的任何原因吗?为什么我的基本示例可以工作,但代码却不能?这是否与我的架构将问题定义为 ObjectId 数组这一事实有关?

最佳答案

MongoDB 文档 $position :
如果数字大于或等于数组的长度,则 $position 修饰符不起作用,并且运算符将元素添加到数组的末尾。

关于javascript - 插入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com