คำถามติดแท็ก mongoose

Mongoose เป็นเครื่องมือสร้างแบบจำลองวัตถุ MongoDB หรือ ODM (Object Document Mapper) เขียนด้วย JavaScript และออกแบบมาเพื่อทำงานในสภาพแวดล้อมแบบอะซิงโครนัส

11
ค้นหาระเบียน MongoDB โดยที่ฟิลด์อาร์เรย์ไม่ว่างเปล่า
บันทึกทั้งหมดของฉันมีเขตข้อมูลที่เรียกว่า "รูปภาพ" ฟิลด์นี้เป็นอาร์เรย์ของสตริง ตอนนี้ฉันต้องการ 10 ระเบียนใหม่ล่าสุดที่อาร์เรย์นี้ไม่ว่างเปล่า ฉันไปเที่ยวไปรอบ ๆ แต่ก็แปลกพอที่ฉันไม่ได้เจออะไรมากมาย ฉันได้อ่านตัวเลือก $ where แล้ว แต่ฉันสงสัยว่ามันช้าแค่ไหนสำหรับฟังก์ชั่นพื้นฐานและถ้ามีทางออกที่ดีกว่า และถึงอย่างนั้นก็ไม่ได้ผล: ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind() ไม่ส่งคืนอะไรเลย การออกไปthis.picturesโดยไม่ใช้บิตความยาวนั้นสามารถใช้งานได้
502 mongodb  mongoose 

10
ค้นหาเอกสารที่มีอาร์เรย์ที่มีค่าเฉพาะ
ถ้าฉันมีสคีมานี้ ... person = { name : String, favoriteFoods : Array } ... โดยที่favoriteFoodsarray นั้นบรรจุด้วยสตริง ฉันจะหาคนที่มี "ซูชิ" เป็นอาหารโปรดของพวกเขาโดยใช้พังพอนได้อย่างไร? ฉันหวังว่าจะมีบางอย่างตามมา: PersonModel.find({ favoriteFoods : { $contains : "sushi" }, function(...) {...}); (ฉันรู้ว่าไม่มี$containsmongodb เพียงอธิบายสิ่งที่ฉันคาดหวังว่าจะพบก่อนที่จะรู้วิธีแก้ปัญหา)
499 mongodb  mongoose 

23
ฉันจะอัปเดต / รับเอกสารใน Mongoose ได้อย่างไร
บางทีมันอาจเป็นเวลาที่ฉันอาจจมอยู่กับเอกสารที่กระจัดกระจายและไม่สามารถคลุมหัวแนวคิดการอัปเดตใน Mongoose :) นี่คือข้อตกลง: ฉันมีสคีมาติดต่อและรุ่น (คุณสมบัติที่สั้นลง): var mongoose = require('mongoose'), Schema = mongoose.Schema; var mongooseTypes = require("mongoose-types"), useTimestamps = mongooseTypes.useTimestamps; var ContactSchema = new Schema({ phone: { type: String, index: { unique: true, dropDups: true } }, status: { type: String, lowercase: true, trim: true, default: 'on' } }); ContactSchema.plugin(useTimestamps); …

3
ฟิลด์“ __v” ใน Mongoose คืออะไร
ฉันใช้Mongooseเวอร์ชัน 3 กับMongoDBเวอร์ชัน 2.2 ฉันสังเกตเห็นว่า__vเขตข้อมูลเริ่มปรากฏในMongoDBเอกสารของฉัน มันเกี่ยวกับเวอร์ชันหรือไม่? มันใช้งานอย่างไร?

10
พังพอน: findOneAndUpdate จะไม่ส่งคืนเอกสารที่อัปเดต
ด้านล่างเป็นรหัสของฉัน var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var Cat = mongoose.model('Cat', { name: String, age: {type: Number, default: 20}, create: {type: Date, default: Date.now} }); Cat.findOneAndUpdate({age: 17}, {$set:{name:"Naomi"}},function(err, doc){ if(err){ console.log("Something wrong when updating data!"); } console.log(doc); }); ฉันมีบันทึกอยู่ในฐานข้อมูล mongo ของฉันแล้วและฉันต้องการเรียกใช้รหัสนี้เพื่ออัปเดตชื่อที่อายุ 17 แล้วพิมพ์ผลออกมาในตอนท้ายของรหัส อย่างไรก็ตามทำไมฉันยังได้รับผลลัพธ์เดียวกันจากคอนโซล (ไม่ใช่ชื่อที่แก้ไข) แต่เมื่อฉันไปที่บรรทัดคำสั่ง mongo db และพิมพ์ " db.cats.find();" …

4
mongodb / พังพอน findMany - ค้นหาเอกสารทั้งหมดที่มี ID ที่แสดงรายการในอาร์เรย์
ฉันมีชุดของ _ids และฉันต้องการให้เอกสารทั้งหมดสอดคล้องกันวิธีที่ดีที่สุดในการทำคืออะไร สิ่งที่ต้องการ ... // doesn't work ... of course ... model.find({ '_id' : [ '4ed3ede8844f0f351100000c', '4ed3f117a844e0471100000d', '4ed3f18132f50c491100000e' ] }, function(err, docs){ console.log(docs); }); อาร์เรย์อาจมี _ids หลายร้อยรายการ

20
หลีกเลี่ยงคำเตือน“ ตัวแยกวิเคราะห์สตริง URL ปัจจุบันเลิกใช้” โดยตั้งค่า useNewUrlParser เป็นจริง
ฉันมีคลาส wrapper ฐานข้อมูลที่สร้างการเชื่อมต่อกับอินสแตนซ์ MongoDB บางส่วน: async connect(connectionString: string): Promise<void> { this.client = await MongoClient.connect(connectionString) this.db = this.client.db() } สิ่งนี้ทำให้ฉันได้รับคำเตือน: (โหนด: 4833) DeprecationWarning: ตัวแยกสตริงสตริง URL ปัจจุบันเลิกใช้แล้วและจะถูกลบออกในเวอร์ชันในอนาคต หากต้องการใช้ parser ใหม่ให้ส่งตัวเลือก {useNewUrlParser: true} ไปยัง MongoClient.connect connect()วิธีการยอมรับMongoClientOptionsเช่นเป็นอาร์กิวเมนต์ที่สอง useNewUrlParserแต่ก็ไม่ได้มีคุณสมบัติที่เรียกว่า ฉันพยายามตั้งค่าคุณสมบัติเหล่านั้นในสตริงการเชื่อมต่อเช่นนี้: mongodb://127.0.0.1/my-db?useNewUrlParser=trueแต่มันไม่มีผลกับคำเตือนเหล่านั้น ดังนั้นฉันuseNewUrlParserจะตั้งให้ลบคำเตือนเหล่านั้นได้อย่างไร สิ่งนี้สำคัญสำหรับฉันเนื่องจากสคริปต์ควรทำงานเป็น cron และคำเตือนเหล่านั้นส่งผลให้เกิดจดหมายขยะในถังขยะ ผมใช้mongodbไดรเวอร์ในรุ่น3.1.0-beta4สอดคล้องกับแพคเกจใน@types/mongodb ทั้งสองคนเป็นฟังเพลงออนไลน์ใหม่ล่าสุดโดยใช้3.0.18npm install วิธีแก้ปัญหา การใช้ mongodb รุ่นเก่ากว่า: "mongodb": "~3.0.8", "@types/mongodb": …

29
วิธีการเลขหน้ากับพังพอนใน Node.js?
ฉันกำลังเขียน webapp พร้อม Node.js และพังพอน ฉันจะแบ่งหน้าผลลัพธ์ที่ได้จากการ.find()โทรได้อย่างไร? ฉันต้องการฟังก์ชั่นที่เทียบเท่ากับ"LIMIT 50,100"ใน SQL

20
E11000 ดัชนีข้อผิดพลาดที่สำคัญที่ซ้ำกันใน mongodb mongoose
ต่อไปนี้เป็นuserสคีมาของฉันในuser.jsแบบ - var userSchema = new mongoose.Schema({ local: { name: { type: String }, email : { type: String, require: true, unique: true }, password: { type: String, require:true }, }, facebook: { id : { type: String }, token : { type: String }, email : { type: String …

6
หยุด Mongoose จากการสร้างคุณสมบัติ _id สำหรับรายการอาร์เรย์เอกสารย่อย
หากคุณมีอาร์เรย์ย่อยเอกสาร Mongoose จะสร้างรหัสสำหรับแต่ละรายการโดยอัตโนมัติ ตัวอย่าง: { _id: "mainId" subDocArray: [ { _id: "unwantedId", field: "value" }, { _id: "unwantedId", field: "value" } ] } มีวิธีบอก Mongoose ว่าไม่สร้างรหัสสำหรับวัตถุภายในอาร์เรย์หรือไม่?

6
คุณจะเปลี่ยนเอกสาร Mongoose เป็นวัตถุธรรมดาได้อย่างไร
ฉันมีเอกสารจากพังพอนพบว่าฉันต้องการขยายก่อนการเข้ารหัส JSON และส่งออกเป็นการตอบสนอง ถ้าฉันลองเพิ่มคุณสมบัติลงในเอกสารมันจะถูกละเว้น คุณสมบัติไม่ปรากฏในObject.getOwnPropertyNames(doc)การขยายเวลาปกติเป็นไปไม่ได้ สิ่งที่แปลกคือใช้JSON.parse(JSON.encode(doc))งานได้และส่งคืนวัตถุที่มีคุณสมบัติที่ถูกต้องทั้งหมด มีวิธีที่ดีกว่าในการทำเช่นนี้?
200 node.js  mongoose 

7
การเปรียบเทียบพังพอน _id และสตริง
ฉันมีแอปพลิเคชั่น node.js ที่ดึงข้อมูลบางส่วนและติดเข้าไปในวัตถุเช่นนี้ var results = new Object(); User.findOne(query, function(err, u) { results.userId = u._id; } เมื่อฉันทำ if / then ตาม ID ที่เก็บไว้นั้นการเปรียบเทียบจะไม่เป็นจริง: if (results.userId == AnotherMongoDocument._id) { console.log('This is never true'); } เมื่อฉันทำ console.log ของทั้งสอง id พวกเขาตรงกับ: User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002 ฉันสมมติว่านี่เป็นปัญหาประเภทข้อมูลบางอย่าง แต่ฉันไม่แน่ใจว่าจะแปลง results.userId เป็นประเภทข้อมูลที่จะส่งผลให้การเปรียบเทียบข้างต้นเป็นจริงและสมองที่ได้รับการว่าจ้างจากภายนอก (aka Google) …

30
ไม่สามารถโหลดส่วนขยาย c ++ bson
โหนดรวม noob ที่นี่ ฉันพยายามเซ็ตอัพตัวอย่างโหนด แต่ข้อผิดพลาดต่อไปนี้ยังคงปรากฏขึ้นทุกครั้งที่ฉันพยายามเรียกใช้: แอปโหนด Failed to load c++ bson extension, using pure JS version events.js:72 throw er; // Unhandled 'error' event ^ Error: failed to connect to [#$%67890 :27017] at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74) at EventEmitter.emit (events.js:106:17) at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15) at EventEmitter.emit (events.js:98:17) at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10) at Socket.EventEmitter.emit (events.js:95:17) at …

6
ผลักรายการลงในอาร์เรย์ mongo ผ่าน mongoose
ฉันค้นหาคำตอบแล้ว แต่ฉันแน่ใจว่าฉันหายไปเพราะคำพูดที่ถูกต้องเพื่ออธิบายสิ่งที่ฉันตามมา โดยทั่วไปฉันมีคอลเลกชัน MongoDB ที่เรียกว่า 'people' schema สำหรับการรวบรวมนั้นมีดังนี้: people: { name: String, friends: [{firstName: String, lastName: String}] } ตอนนี้ฉันมีแอปพลิเคชันด่วนขั้นพื้นฐานที่เชื่อมต่อกับฐานข้อมูลและสร้าง 'คน' ด้วยอาร์เรย์เพื่อนที่ว่างเปล่าได้สำเร็จ ในตำแหน่งรองในแอปพลิเคชันจะมีแบบฟอร์มเพื่อเพิ่มเพื่อน แบบฟอร์มที่ใช้ในชื่อและนามสกุลจากนั้นโพสต์พร้อมกับฟิลด์ชื่อยังสำหรับการอ้างอิงถึงวัตถุคนที่เหมาะสม สิ่งที่ฉันกำลังลำบากในการทำคือการสร้างวัตถุเพื่อนใหม่แล้ว "ผลัก" วัตถุนั้นลงในอาร์เรย์เพื่อน ฉันรู้ว่าเมื่อฉันทำสิ่งนี้ผ่านทางคอนโซล mongo ฉันใช้ฟังก์ชั่นอัพเดทด้วย $ push เป็นอาร์กิวเมนต์ที่สองของฉันหลังจากเกณฑ์การค้นหา แต่ฉันไม่สามารถหาวิธีที่เหมาะสมเพื่อให้พังพอนทำเช่นนี้ db.people.update({name: "John"}, {$push: {friends: {firstName: "Harry", lastName: "Potter"}}}); ปรับปรุง: ดังนั้นคำตอบของเอเดรียเป็นประโยชน์มาก ต่อไปนี้เป็นสิ่งที่ฉันทำเพื่อบรรลุเป้าหมาย ในไฟล์ app.js ของฉันฉันกำหนดเส้นทางชั่วคราวโดยใช้ app.get('/addfriend', users.addFriend); ฉันอยู่ที่ไหนในไฟล์ …

7
Node.js สตริง Mongoose.js ไปยังฟังก์ชัน ObjectId
มีฟังก์ชั่นในการเปลี่ยนสตริงเป็น objectId ในโหนดโดยใช้พังพอนหรือไม่? สคีมาระบุว่าบางสิ่งบางอย่างเป็น ObjectId แต่เมื่อมันถูกบันทึกจากสตริง mongo บอกฉันว่ามันยังคงเป็นเพียงแค่สตริง _id objectId("blah")ของวัตถุเช่นจะแสดงเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.