Mongodb:插入带有客户 _id 的条目 (monk/node.js)
Mongod: inserting entry with customer _id (monk/node.js)
我读到可以使用除数组之外的任何 _id
类型。 (但是好像找不到,请各位确认一下好吗?)
出于性能原因,我希望用户名(字符串)成为 _id
。
在Node.js中:
const monk = require('monk');
const db = monk('localhost:27017/test',
function(err) {
if(err)
console.log(err.toString());
});
//const doc = {user: 'aa', password: 'password'};
//const doc = {_id: 'aa', password: 'password'};
const doc = {_id: monk.id('aa'), password: 'password'};
var users = db.get('users');
users.insert([doc]);
第一个注释行有效,但其他行都出错了:
_id: monk.id('aa')
立即出错
_id: 'aa'
执行 users.insert()
时出错,因为我猜它试图将字符串转换为 Id
不管怎样,错误都是一样的:
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
如何将给定的字符串用于 _id
?
ps:要运行这段代码,你需要mongo运行ning,mongod --dbpath data
,和nodejs:npm install monk; nodejs
.
monk.id(ARG)
会将 ARG
转换为 ObjectId
(documentation),这不是您想要的。
而是直接传递字符串:
const doc = { _id: 'aa', password: 'password' };
由于 Monk 也会自动将 id 转换为 ObjectId
,因此您必须禁用自动转换:
const db = monk('localhost:27017/test', ...);
db.options = {
safe : true,
castIds : false
};
我读到可以使用除数组之外的任何 _id
类型。 (但是好像找不到,请各位确认一下好吗?)
出于性能原因,我希望用户名(字符串)成为 _id
。
在Node.js中:
const monk = require('monk');
const db = monk('localhost:27017/test',
function(err) {
if(err)
console.log(err.toString());
});
//const doc = {user: 'aa', password: 'password'};
//const doc = {_id: 'aa', password: 'password'};
const doc = {_id: monk.id('aa'), password: 'password'};
var users = db.get('users');
users.insert([doc]);
第一个注释行有效,但其他行都出错了:
_id: monk.id('aa')
立即出错_id: 'aa'
执行users.insert()
时出错,因为我猜它试图将字符串转换为 Id
不管怎样,错误都是一样的:
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
如何将给定的字符串用于 _id
?
ps:要运行这段代码,你需要mongo运行ning,mongod --dbpath data
,和nodejs:npm install monk; nodejs
.
monk.id(ARG)
会将 ARG
转换为 ObjectId
(documentation),这不是您想要的。
而是直接传递字符串:
const doc = { _id: 'aa', password: 'password' };
由于 Monk 也会自动将 id 转换为 ObjectId
,因此您必须禁用自动转换:
const db = monk('localhost:27017/test', ...);
db.options = {
safe : true,
castIds : false
};