【发布时间】:2017-07-30 15:53:03
【问题描述】:
是否可以将 _id 字段内具有 _id :ObjectId("22332") 的 mongo 集合批量更新为字符串,以便改用 _id : "22332"
我正在使用 Meteor,我已经使用 mongoimport 导入了 csv,但它会自动将 ObjectId 添加为 ("22332") 我不想破坏默认的流星 _id 功能,并且必须将 ._str 放在每个 javascript 文件上。
{
"_id" : ObjectId("5696cf153f8d6d60f723268b"),
"NTitle" : 18,
"field1" : "company announces Private Placement",
"field2" : "111099432820040602PP.pdf",
"field3" : "Vancouver, BC, June 2, 2004...... ",
"field4" : "2004-02-06",
"field5" : "YES"
}
我想要这个
{
"_id" : 5696cf153f8d6d60f723268b,
"NTitle" : 18,
"field1" : "company announces Private Placement",
"field2" : "111099432820040602PP.pdf",
"field3" : "Vancouver, BC, June 2, 2004...... ",
"field4" : "2004-02-06",
"field5" : "YES"
}
这是一个插入脚本。
Meteor.methods({
postInsert: function(postAttributes) {
check(Meteor.userId(), String);
check(postAttributes, {
title: String,
postContent: String,
timeToEnable: Date,
timeDisplay:String,
year: Number,
month: Number,
day: Number,
hours: Number,
timeString : String,
postNow: Date
});
var user = Meteor.user();
var post = _.extend(postAttributes, {
userId: user._id,
author: user.username,
submitted: new Date()
});
var postId = Posts.insert(post);
return {
_id: postId
};
}
});
【问题讨论】:
-
因为它涉及到解析字符串,所以可能无法仅使用 mongoDB 来完成。但是,您可以编写一个仅抓取记录、解析 id 并更新它的小脚本。不会很难写。
-
@khuderm 我会在流星的服务器端用javascript编写吗?你有我可以开始的资源或例子吗?
-
我假设您已经有代码可以从您的 mongo 数据库中选择/插入/更新/删除。我对流星不是很熟悉,所以我不知道。您的服务器端代码使用什么语言?
-
我在上面添加了插入脚本。我在服务器和客户端上使用 javascript。
-
在客户端创建一个 UI 是一个完美的入侵向量。除非您有细化到对象级别的权限模型,否则将值附加到客户端可以任意发送的 id 会导致数据破坏的可能性很大。如果我没记错的话,您应该能够构建 UI 并在加载时请求数据。作为同行之间的评论:我对root of all evil strikes again有强烈的感觉。
标签: javascript mongodb database