【发布时间】:2017-06-09 20:21:52
【问题描述】:
我查看了stackoverflow,但没有找到答案。我正在尝试将对象添加到本地 mongodb 中不重复的新(空)数组中。我还想用其他对象更新这个数组。
我查看了 $push 和 $addToSet,这些示例使用了一个 "id" (_id),在我添加我的第一个对象之前不会创建它。
我正在使用 Node.js、Mongoose.js、Mongodb、Express.js。
我的架构是:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var barSchema = new Schema({
location: [{
name: String,
city: String,
total: Number
}]
});
var Bar = mongoose.model('Bar', barSchema);
module.exports = Bar;
我试过用这个;
var newBar = bar({
location: [{ "name": req.body.bar, "city": req.body.city, "total": 0 }] });
newBar.save(function(err) {
if (err) throw err;
});
我也成功使用了 $push,但在这种情况下,我没有 "id"
user.findByIdAndUpdate(req.user._id, { $push: {
barlist: { "name": req.body.bar,
"rsvp": true } } },
function(err, user) { });
这回馈了这个;
{
"_id" : ObjectId("######"),
"location" : [
{
"name" : "1st Bar",
"city" : "Boston",
"total" : 0,
"_id" : ObjectId("#########")
}
],
"__v" : 0
}
{
"_id" : ObjectId("######"),
"location" : [
{
"name" : "2nd Bar",
"city" : "Boston",
"total" : 0,
"_id" : ObjectId("#########")
}
],
"__v" : 0
}
但是我想得到这个;
{
"_id" : ObjectId("#######"),
"location" : [
{
"name" : "Biddy Early's",
"city" : "Boston",
"total" : 0
},
{
"name" : "Some Bar Name",
"city" : "Boston",
"total" : 0
}
]
}
【问题讨论】:
-
如果您不想在位置对象中使用
_id,请在您的架构中添加_id: false。location: [{name: String, city: String, total: Number, _id: false }] -
谢谢 Tarush 我不知道我能做到这一点。然而,这并不是我所关注的。虽然我以后会记住这一点。感谢您的帮助。
标签: javascript arrays node.js mongodb mongoose