小编Fel*_*win的帖子

使用带有$ in的ID数组更新多个文档时出现问题

此查询正在完成工作:

db.collection.update(
    { "_id": oneIdProvided }, 
    { $inc: { "field": 5 } },{ upsert: true }
)
Run Code Online (Sandbox Code Playgroud)

现在我想用不同的ID多次执行相同的操作,我认为好的方法是使用$ in,因此我试过:

db.collection.update(
    { "_id": { $in: oneArrayOfIds} }, 
    { $inc: { "field": 5 } },{ upsert: true }
)
Run Code Online (Sandbox Code Playgroud)

问题是:如果数组中提供的ID之一不存在于集合中,则会创建一个新文档(这就是我想要的),但会将其归为自动ID,而不是使用我提供的ID并且正在寻找.

我看到的一个解决方案可能是首先使用我的ID数组(那些已经存在的ID不会被修改)执行插入查询,然后使用upsert执行更新查询:false

您是否只在一个查询中看到了这样做的方法?

mongodb mongodb-query

5
推荐指数
1
解决办法
464
查看次数

从 Express 提供没有扩展名的静态文件,出现与文件同名的子目录

这里的目标是为我的静态站点(使用 nuxtjs 生成)提供 url 且不带斜杠。

我想foo.html使用 url提供服务/foo 为此,我使用带有扩展选项的快速静态

app.use(express.static(__dirname + '/public', { extensions: 'html' }))
Run Code Online (Sandbox Code Playgroud)

这工作正常,除非 html 文件与文件夹同名。让我们考虑这个文件树:

foo.html
bar.html
bar/baz.html
Run Code Online (Sandbox Code Playgroud)

/foo 将服务 foo.html

/bar/baz 将服务 baz.html

/bar会重定向到/bar/

我试图以这种方式停用重定向选项:

app.use(express.static(__dirname + '/public', { extensions: 'html', redirect: false }))
Run Code Online (Sandbox Code Playgroud)

现在/bar不再重定向,但文件bar.html仍未提供!

Express 正在移动到 next()

我能够在其他路由之后添加这个 bar.html:

app.use(function(req, res, next) {
    var file = __dirname + '/public' + req.path + '.html'
    fs.exists(file, function(exists) {
        if (exists) res.sendFile(file)
        else next()
    })
}) …
Run Code Online (Sandbox Code Playgroud)

node.js express

5
推荐指数
1
解决办法
823
查看次数

标签 统计

express ×1

mongodb ×1

mongodb-query ×1

node.js ×1