Hướng dẫn mongodb query by id string - truy vấn mongodb theo chuỗi id

15

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Nếu tôi có ID tài liệu Mongo làm chuỗi làm thế nào để tôi truy vấn nó dưới dạng _ID?

Nó sẽ hoạt động chính xác để làm .find({_id:'stringID'}) hay tôi cần chuyển đổi nó thành đối tượng BSON trước?

Hỏi ngày 20 tháng 4 năm 2012 lúc 21:44Apr 20, 2012 at 21:44

Hướng dẫn mongodb query by id string - truy vấn mongodb theo chuỗi id

1

Ý bạn là bạn có chuỗi 24 chữ số lục giác của một ObjectID?

Giả sử đó là những gì bạn muốn nói, hầu hết các trình điều khiển đều có cách lấy một chuỗi và chuyển đổi nó thành một ObjectID. Trong JavaScript đó là:

.find({_id:new ObjectId("4f91bfcfaa7c5687a0c686d4")})

Được cập nhật để hữu ích hơn một chút cho trình điều khiển-bản địa (từ tài liệu tại https://github.com/christkv/node-mongodb-vative): to be a bit more useful for the node-native driver (from the documentation at https://github.com/christkv/node-mongodb-native):

// Get the objectID type
var ObjectID = require('mongodb').ObjectID;

var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined

Đã trả lời ngày 20 tháng 4 năm 2012 lúc 22:35Apr 20, 2012 at 22:35

Hướng dẫn mongodb query by id string - truy vấn mongodb theo chuỗi id

Eve Freemaneve FreemanEve Freeman

31.7K2 Huy hiệu vàng83 Huy hiệu bạc98 Huy hiệu Đồng2 gold badges83 silver badges98 bronze badges

5

Nếu các giá trị _ID của bạn là chuỗi, bạn có thể truy vấn chúng giống như bất kỳ trường nào khác. .

Dưới đây là một ví dụ trong vỏ Mongo JS:

> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 

Đây có phải là những gì bạn đang tìm kiếm? Tôi hy vọng tôi đã không hiểu lầm câu hỏi của bạn!

Đã trả lời ngày 20 tháng 4 năm 2012 lúc 22:08Apr 20, 2012 at 22:08

MarcmarcMarc

5.40028 Huy hiệu bạc18 Huy hiệu đồng28 silver badges18 bronze badges

1

Mongoose Auto chuyển chuỗi _id cho ObjectID khi bạn sử dụng findByID, do đó bạn có thể truy vấn bằng chuỗi _id.

Cũng nên nhớ rằng bất kỳ đầu vào nào xuất hiện vào API của bạn từ req.body hoặc req.params đều sẽ là loại chuỗi để bạn sẽ cần gõ Cast nếu cần ..., nhưng như đã đề cập, Mongoose làm điều đó cho bạn để bạn có thể để _id ở định dạng chuỗi nó đến như.

marc_s

714K171 Huy hiệu vàng1315 Huy hiệu bạc1434 Huy hiệu đồng171 gold badges1315 silver badges1434 bronze badges

Đã trả lời ngày 8 tháng 5 năm 2020 lúc 16:09May 8, 2020 at 16:09

1

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

// Get the objectID type
var ObjectID = require('mongodb').ObjectID;

var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
1 returns biểu diễn chuỗi của
// Get the objectID type
var ObjectID = require('mongodb').ObjectID;

var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
2

Returns the string representation of the

// Get the objectID type
var ObjectID = require('mongodb').ObjectID;

var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
2

Ví dụ sau:

  • Tạo một

    // Get the objectID type
    var ObjectID = require('mongodb').ObjectID;
    
    var idString = '4e4e1638c85e808431000003';
    collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
    collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
    
    2 mới và lưu trữ nó trong biến
    // Get the objectID type
    var ObjectID = require('mongodb').ObjectID;
    
    var idString = '4e4e1638c85e808431000003';
    collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
    collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
    
    4.

  • Tạo một biểu diễn chuỗi của

    // Get the objectID type
    var ObjectID = require('mongodb').ObjectID;
    
    var idString = '4e4e1638c85e808431000003';
    collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
    collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
    
    4 bằng phương pháp
    // Get the objectID type
    var ObjectID = require('mongodb').ObjectID;
    
    var idString = '4e4e1638c85e808431000003';
    collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
    collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
    
    6.
    // Get the objectID type
    var ObjectID = require('mongodb').ObjectID;
    
    var idString = '4e4e1638c85e808431000003';
    collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
    collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
    
    6
    method.

  • Lưu trữ biểu diễn chuỗi trong biến

    // Get the objectID type
    var ObjectID = require('mongodb').ObjectID;
    
    var idString = '4e4e1638c85e808431000003';
    collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
    collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
    
    7.

Chạy các lệnh sau trong

// Get the objectID type
var ObjectID = require('mongodb').ObjectID;

var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
8
// Get the objectID type
var ObjectID = require('mongodb').ObjectID;

var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
8

myObjectId = ObjectId("507c7f79bcf86cd7994f6c0e")
myObjectIdString = myObjectId.toString()

Hoạt động trả về chuỗi sau:

Để xác nhận loại

// Get the objectID type
var ObjectID = require('mongodb').ObjectID;

var idString = '4e4e1638c85e808431000003';
collection.findOne({_id: new ObjectID(idString)}, console.log)  // ok
collection.findOne({_id: idString}, console.log)  // wrong! callback gets undefined
7, hãy sử dụng toán tử JavaScript
> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
0:

Hoạt động trả về như sau:

Dưới đây là một số làm rõ cho câu hỏi của bạn:

1 - Đây có phải là một thực tế tốt để lưu trữ mạng trong một vụ va chạm tách biệt? (chú ý đến yêu cầu ở trên)

Nó phụ thuộc vào chức năng ứng dụng của bạn và dữ liệu.

Một trong những câu hỏi là mối quan hệ giữa hai thực thể

> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
1 và
> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
2 là gì? Có phải là một-một, một-to_many hoặc nhiều người.

Câu hỏi tiếp theo là, các truy vấn quan trọng của bạn là gì? Những truy vấn nào được truy cập thường xuyên và rất quan trọng về trải nghiệm người dùng, hiệu suất, v.v.

Nói chung, một mối quan hệ một-một nên được mô hình hóa như một tài liệu duy nhất. Đó là

> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
1 và
> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
2 là một tài liệu. Lưu ý, mỗi tài liệu MongoDB có thể lưu trữ tới 16 MB dữ liệu.

Một mối quan hệ một-nhiều có thể được mô hình hóa như một thực thể duy nhất hoặc là hai thực thể. Điều ưa thích là các thông tin liên quan được lưu trữ cùng nhau - để nó có thể được truy cập cùng nhau.


2 - Có vấn đề tuân thủ/quy ước nào xây dựng mối quan hệ giữa hai tài liệu này (như SQL DBMS) không?

Tài liệu tham khảo hoặc mối quan hệ liên quan đến hai thực thể, trong trường hợp này là thông tin liên quan đến

> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
2.

Lý tưởng nhất, nó phải là lĩnh vực duy nhất của thực thể

> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
2. Điều đó có nghĩa là, lưu trữ trường _id của ____ 27 (cũng) trong tài liệu phụ
> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
2 trong
> db.test.insert({_id:"stringID1"})
> db.test.insert({_id:"stringID2"})
> db.test.insert({_id:"stringID3"})
> db.test.find({_id:"stringID1"})
{ "_id" : "stringID1" }
> 
1.
myObjectId = ObjectId("507c7f79bcf86cd7994f6c0e")
myObjectIdString = myObjectId.toString()
1 này có thể được sử dụng làm trường tham chiếu (hoặc mối quan hệ).

Khung tập hợp MongoDB cho phép các truy vấn "tham gia" giữa các bộ sưu tập liên quan - giai đoạn tổng hợp tra cứu $ cho phép điều này. Vì vậy, nếu bạn cần truy cập dữ liệu từ cả hai bộ sưu tập dưới dạng một truy vấn duy nhất sử dụng

myObjectId = ObjectId("507c7f79bcf86cd7994f6c0e")
myObjectIdString = myObjectId.toString()
2.

Các truy vấn truy cập một bộ sưu tập duy nhất có thể được hình thành dễ dàng và thực hiện tốt hơn so với các truy vấn tổng hợp bằng cách sử dụng

myObjectId = ObjectId("507c7f79bcf86cd7994f6c0e")
myObjectIdString = myObjectId.toString()
2.


3 - Và, tôi đã tự hỏi ... Tôi có thể lưu trữ _id dưới dạng chuỗi thay vì ObjectID không? Tôi đã đọc một số lời khuyên, nhưng tôi không có ý kiến ​​kết luận về nó. ví dụ: ... mạng: {_id: "192.168.1.0/24"} (Độc đáo Đảm bảo: D)

Trường _id có thể thuộc bất kỳ loại BSON MongoDB nào, ngoại trừ loại trường mảng. Những điều quan trọng khác cần lưu ý về trường _id là:

  • Nó phải là duy nhất (có một chỉ số duy nhất mặc định và bất biến trên trường này)
  • Nó phải là bất biến (giá trị trường này không thể được cập nhật hoặc xóa cho một tài liệu).

Tôi có thể sử dụng ID chuỗi trong MongoDB không?

Vâng, bạn có thể.BTW, Tính độc đáo được đảm bảo bởi MongoDB.Bởi vì trường _ID có một chỉ mục duy nhất theo mặc định.. BTW, uniqueness guaranteed by mongodb. Because _id field has a unique index by default.

Làm cách nào để tìm kiếm một chuỗi trong MongoDB?

Sử dụng toán tử truy vấn văn bản $ để thực hiện tìm kiếm văn bản trên bộ sưu tập với chỉ mục văn bản.$ Text sẽ mã hóa chuỗi tìm kiếm bằng khoảng trắng và hầu hết các dấu chấm câu là dấu phân cách và thực hiện logic hoặc của tất cả các mã thông báo như vậy trong chuỗi tìm kiếm.. $text will tokenize the search string using whitespace and most punctuation as delimiters, and perform a logical OR of all such tokens in the search string.

Bản ghi MongoDB bằng ID ở đâu?

MongoDB cung cấp một chức năng với tên findById () được sử dụng để truy xuất tài liệu khớp với 'id' theo quy định của người dùng.Để sử dụng findByid trong hàm mongoDB, find () hàm được sử dụng.Nếu không tìm thấy tài liệu nào phù hợp với 'ID' được chỉ định, nó sẽ trả về NULL.findById() which is used to retrieve the document matching the 'id' as specified by the user. In order to use findById in MongoDB, find() function is used. If no document is found matching the specified 'id', it returns null.

Làm thế nào để bạn tìm thấy ID đối tượng của một chuỗi?

ObjectId...
Tạo một objectid () mới và lưu trữ nó trong biến myObjectID ..
Tạo một biểu diễn chuỗi của myObjectID bằng phương thức toString () ..
Lưu trữ biểu diễn chuỗi trong biến myObjectIdString ..