gpt4 book ai didi

mongodb - '$addToSet' 中的美元 ($) 前缀字段 '$addToSet' 对存储无效

转载 作者:可可西里 更新时间:2023-11-01 09:55:38 26 4
gpt4 key购买 nike

我一直在尝试使用 node.js api 在 findAndModify 查询中使用 $addToSet。但是我收到一条错误消息,指出前缀字段 $addToSet 对存储无效。查询可以使用 mongo shell 客户端,但不能使用 api。

MongoClient.connect(config.mongo.uri, function(err, db) {
assert.equal(null, err)
console.log('Connected to mongodb');
db.collection(‘users’).findAndModify(
{‘username’: ‘foo’},
[],
{$addToSet: {roles: “somerole”}},
{upsert: true, new: true}, function(err, user) {
if (err) console.log(err});
});

上面的代码给我一个错误,提示设置一个以 protected 关键字 $addToSet 开头的字段这个错误:

MongoError: exception: The dollar ($) prefixed field '$addToSet' in '$addToSet' is not valid for storage.

版本:蒙神:2.6.6节点 mongodb:1.4.31

最佳答案

随着 2.6 中的更改,我重写了代码以使用查找/更新。

MongoClient.connect(config.mongo.uri, config.mongo.options, function(err, db) {
assert.equal(null, err)
console.log('Connected to mongodb');

db.collection('users').find({'username': username}, function(err, user) {
var user_data = {'username': username}
if (user) {
user_data['$addToSet'] = { roles: item['RolesRoleName']};
db.collection('users').update({_id: user._id}, user_data, function(err, user) {
if (err) console.log(username, err);
console.log("Updated", username);
});
} else {
user_data['roles'] = [item.IsSuperUser == "TRUE" ? "admin" : "user"];
db.collection('users').save(user_data, function(err, user) {
if (err) console.log(username, err);
console.log("Added", username)
});
});
});

关于mongodb - '$addToSet' 中的美元 ($) 前缀字段 '$addToSet' 对存储无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728531/

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