【发布时间】:2014-07-18 20:27:58
【问题描述】:
我想知道您将如何查询 where array._id != 'someid'。
这是我为什么需要这样做的一个例子。用户想要更新他们的帐户电子邮件地址。我需要这些是唯一的,因为他们使用它来登录。当他们更新帐户时,我需要确保新电子邮件不存在于另一个帐户中,但如果它已经存在于他们的帐户中,请不要给出错误(他们没有更改他们的电子邮件,只是他们的个人资料中的其他内容)。
以下是我尝试使用的代码。它不会给出任何错误,但它始终返回计数 0,因此即使应该创建错误也不会产生错误。
Schemas.Client.count({ _id: client._id, 'customers.email': email, 'customers._id': { $ne: customerID } }, function (err, count) {
if (err) { return next(err); }
if (count) {
// it exists
}
});
我猜它应该使用 $ne 或 $not,但我在网上找不到任何带有 ObjectId 的示例。
客户数据示例:
{
_id: ObjectId,
customers: [{
_id: ObjectId,
email: String
}]
}
【问题讨论】: