如果我有一个对象数组,请说
var myArray = [
{ name: 'Fred', state: 'CA' },
{ name: 'Jane', state: 'DE' }
];
并将它们插入到 mongo 集合中(我使用的是 node.js 和“标准”npm mongo 驱动程序,npmjs.org/package/mongodb)
someCollection.insert(myArray, errCallback);
我有点惊讶的是,结果对象(在内存中 - 使用调试器查看)现在添加了 _id 字段。
有办法避免这种情况吗?从某些方面来说,拥有 _id 是一件好事,事实上,我编写了一些额外的代码,因为我认为它不会在那里!但我想将它们打印为 JSON 等,而最终用户可能不想看到类似的东西
"name" : "Fred",
"_id": "52caeb50559518c01ab1dda5"
(加上可能的安全问题)
显然,我可以调整我的打印代码,但对于 future 来说,最好避免这种情况,或者至少知道如何避免。如果无法避免,我肯定要编写自己的 ID 生成器。
查看文档 ( http://mongodb.github.io/node-mongodb-native/api-generated/collection.html ),我看到了一个forceServerObjectId,但这不是我想要的。
最佳答案
我不熟悉 node.js 驱动程序,但我可以证明默认 MongoDB shell 的默认行为。当您执行正常的 db.collection.find( {query}, {fields}) 查询时,_id 字段会自动包含在输出中。要删除 _id 字段,您需要在输出的字段选择中显式声明 _id : 0
。 Node.js 驱动程序中的行为可能类似。
关于javascript - MongoDb insert() 正在将 _id 放入我的对象中,但我不想要它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20956319/