Pertanyaan MongoDB Shell - akses koleksi dengan periode nama?


Saya telah menemukan koleksi di salah satu basis data MongoDB kami dengan namanya my.collection.

Apakah ada cara untuk mengakses koleksi ini dari shell MongoDB, meskipun ada titik di nama itu?

> db.my.collection.findOne();
null

Saya cukup yakin itu tidak benar.


25
2018-01-13 14:02


asal


Jawaban:


Kode Anda benar. Jika kembali nol berarti koleksi itu kosong.


1
2018-01-13 14:13



coba ini sebagai gantinya:

db["my.collection"].findOne();

Anda mengalami masalah yang sama dengan tanda hubung atau nama lain yang tidak cocok [a-zA-Z _ $] [0-9a-zA-Z_ $]

Batasan ini berasal dari nama yang valid untuk properti objek javascript.


79
2017-09-13 17:21



jika nama koleksi adalah "my.collection"

db.my.collection.findOne (); // BAIK
  batal

jika nama koleksi adalah "my.1.collection"

db.my.1.collection.findOne (); // Tidak baik
  SyntaxError: hilang; sebelum pernyataan

Memperbaiki:

db ["my.1.collection"]. findOne (); // Sekarang baik-baik saja
  batal


11
2018-01-03 16:38



Metode lain yang sangat mudah adalah:

db.getCollection("_SCHEMA").find()

Sementara dalam kasus underscore di nama, masih menyebabkan kesalahan dengan jawaban @Laura:

> db["_SCHEMA"].find()
2016-07-18T17:44:16.948+0200 E QUERY    [thread1] TypeError: db._SCHEMA is undefined :
@(shell):1:1

6
2017-07-18 15:48