我很困惑。我尝试使用NodeJS中集合的findAndModify
函数,正如官方MongoDB文档中所述:
db.collection('myColl').findAndModify(
{
query: {
itemId: ObjectID(itemId),
requesterId: requesterId
},
remove: 1
},
function(err, found){
console.log(err, found);
});
它在控制台中工作正常。但是在NodeJS中我检索到了一个错误。错误消息告诉我,我必须提供至少一个更新或删除。 StackOverflow上有一些类似的问题,其中一个答案提到使用findAndRemove
代替。
好的,但是当我搜索findAndRemove
的文档时,我发现没有任何帮助。此外,我的IDE(WebStorm)将该方法标记为已弃用。通过自动填充功能,我还发现函数findOneAndDelete
没有被标记为已弃用且似乎可以执行我想要的操作,但我无法找到有关该功能的任何内容。
因为我对NodeJS和MongoDB都很陌生,所以这个东西真的很混乱,我对这个文档非常失望。
我的问题是:背景是什么?我在哪里可以找到MongoDB的JavaScript API的有用文档或如何正确使用MongoDB文档?我在哪里可以获得有关上述方法的信息?
答案 0 :(得分:3)
我假设你使用的是MongoDB节点驱动程序。
您可以在此处找到findAndModify函数的文档,以及插入和更新函数:
https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html
答案 1 :(得分:3)
有许多Node.js模块用于连接和管理MongoDB服务器。
原生的是:https://github.com/mongodb/node-mongodb-native
但你也可以使用最受欢迎的Mongoose:https://github.com/Automattic/mongoose
说我觉得你的代码错了应该是:
db.collection('myColl').findAndModify({
itemId: ObjectID(itemId),
requesterId: requesterId
}, null, null, {
remove: 1
},
function(err, found) {
console.log(err, found);
});
如文档中所述:findAndModify(query, sort, doc, options, callback)
答案 2 :(得分:0)
db.collection('myColl').findAndModify(
{ itemId: ObjectID(itemId), requesterId: requesterId },
{}, //Do an update here if you want
{ remove: true }, // Remove the doc
function (err, doc) {
// do things
}
);
https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html#example