如果我有一个对象数组,请说
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"
(加上可能的安全问题)
显然,我可以调整我的打印代码,但对于将来,避免这种情况可能会很好,或者至少知道如何。如果无法避免,我肯定要编写自己的ID生成器。
查看文档(http://mongodb.github.io/node-mongodb-native/api-generated/collection.html)我看到一个forceServerObjectId,但这不是我想要的。
答案 0 :(得分:0)
我不熟悉node.js驱动程序,但我可以证明默认的MongoDB shell的默认行为。执行常规db.collection.find({query},{fields})查询时,_id字段将自动包含在输出中。要删除_id字段,您需要在输出的字段选择中明确声明_id : 0
。 node.js驱动程序中的行为可能类似。