আমি মঙ্গোডিবি শেলের সমস্ত সংগ্রহের তালিকা কীভাবে করব?


757

মঙ্গোডিবি শেলটিতে, আমি যে বর্তমান ডাটাবেসটি ব্যবহার করছি তার জন্য আমি কীভাবে সমস্ত সংগ্রহের তালিকা করব?

উত্তর:


1157

আপনি করতে পারেন...

জাভাস্ক্রিপ্ট (শেল):

db.getCollectionNames()

node.js:

db.listCollections()

নন-জাভাস্ক্রিপ্ট (কেবল শেল):

show collections

আমি যে জাভাস্ক্রিপ্ট কল না কারণ কারণ:

$ mongo prodmongo/app --eval "show collections"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
2016-10-26T19:34:34.886-0400 E QUERY    [thread1] SyntaxError: missing ; before statement @(shell eval):1:5

$ mongo prodmongo/app --eval "db.getCollectionNames()"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
[
    "Profiles",
    "Unit_Info"
]

আপনি যদি সত্যিই সেই মিষ্টি, মিষ্টি show collectionsআউটপুট করতে চান তবে আপনি এটি করতে পারেন:

$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info

দুর্দান্ত বৈশিষ্ট্য। অন্য কিছু করার জন্য আপনি নামের অ্যারে দিয়ে পুনরাবৃত্তি করতে পারেন (যেমন সংগ্রহ থেকে সমস্ত আইটেম সরান)।
হিলটন পেরান্টুনেস


6
db.listCollections()উত্তরটি এখানে প্রদর্শিত এবং সবুজতে পরীক্ষা করা হিসাবে দয়া করে পেতে পারি ? অন্যথায় লোকেরা একই উত্তর দিচ্ছে যখন আমি এই উত্তরটিতে আসি তখন আমি অসংখ্যবার করেছি - এবং ব্যবহারের চেষ্টা করেছি db.getCollectionNamesএবং ত্রুটি ফিরে আসবে db.collectionNames is not a function
নিফটিলেটটিস

22
@niftylettuce এই প্রশ্নটি মঙ্গোডিবি শেল সম্পর্কে, নোড.জেএস ড্রাইভার নয়। db.getCollectionNames()শেলটির জন্য এখনও সঠিক উত্তর।
জনিএইচকে

424
> show collections

কমান্ড লাইন সহায়তা ( help) তে বর্ণিত হিসাবে বর্তমানে নির্বাচিত ডিবিতে সমস্ত সংগ্রহের তালিকা তৈরি করবে ।


2
আপনি কোনও স্ক্রিপ্টে শো সংগ্রহগুলি আউটপুট ব্যবহার করতে পারবেন না, তবে সমস্ত নামের একটি অ্যারে পেতে এক্স = db.get ColटrationNames () করতে পারেন।
ceteras

1
প্রতিটি সংগ্রহের পরে তালিকাভুক্ত দুটি সংখ্যার অর্থ কী? দুই ধরণের আকার? content 1145.586MB / 1506.855MBউদাহরণ স্বরূপ.
ড্যান ড্যাসক্লেস্কু

@ ড্যান: আমি কিছুক্ষণের জন্য মঙ্গোডিবি ব্যবহার করি নি, তবে আমার সর্বোত্তম অনুমান যে সংগ্রহটিতে সঞ্চিত তথ্যগুলির আকার এটি বনাম collection সংগ্রহের জন্য বরাদ্দকৃত মোট পরিমাণ (ক্রমাগত পুনর্বিবেচনা ছাড়াই ছোটখাট আপডেট এবং বৃদ্ধি পরিচালনা করতে) পুরো সংগ্রহের বিষয়বস্তুর জন্য নতুন স্থান)।
ক্যামেরন

265

আমি যে বর্তমান ডাটাবেসটি ব্যবহার করছি তার জন্য আমি কীভাবে সমস্ত সংগ্রহের তালিকা করব?

তিনটি পদ্ধতি

  • show collections
  • show tables
  • db.getCollectionNames()

সমস্ত ডাটাবেস তালিকা করতে :

show dbs

প্রদত্ত ডেটাবেস প্রবেশ বা ব্যবহার করতে:

use databasename

সমস্ত সংগ্রহের তালিকা করতে :

show collections

আউটপুট:

collection1
collection2
system.indexes

(বা)

show tables

আউটপুট:

collection1
collection2
system.indexes

(বা)

db.getCollectionNames()

আউটপুট:

[ "collection1", "collection2", "system.indexes" ]

প্রবেশ করানো বা প্রদত্ত সংগ্রহ ব্যবহার করতে

use collectionname

1
সর্বাধিক সম্পূর্ণ উত্তরের জন্য +1। চিত্রণ show tablesসম্পর্কিত একটি ডিবিএমএস ব্যাকগ্রাউন্ড থেকে আসা যারা তাদের জন্য বেশ সহায়ক for
জেফ পেকেট

8
না, useডাটাবেস ব্যবহার করা, সংগ্রহের সাথে কিছুই করার নেই
sjmeverett

1
আমরা db.colલેક્শনগুলিও ব্যবহার করতে পারি
বিপ্লব মালাকার


30

অন্যান্য ব্যক্তিদের দ্বারা প্রস্তাবিত বিকল্পগুলি ছাড়াও:

show collections  // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list

আরও একটি উপায় রয়েছে যা আপনি কীভাবে সংগ্রহগুলি তৈরির প্রতিটি জানতে পারেন তা উদাহরণস্বরূপ কার্যকর হতে পারে (উদাহরণস্বরূপ, এটি একটি নির্দিষ্ট আকারের সাথে আবদ্ধ সংগ্রহ):

db.system.namespaces.find()

23

এর ভিতরে সমস্ত সংগ্রহ / সারণী দেখানোর জন্য আপনাকে প্রথমে একটি ডাটাবেস ব্যবহার করতে হবে।

>show dbs
users 0.56787GB
test (empty)
>db.test.help() // this will give you all the function which can be used with this db
>use users
>show tables //will show all the collection in the db

15

আপনি ব্যবহার করতে পারেন show tablesবা show collections


2
@ ললিতকুমারবি: কীভাবে এলো? অন্যান্য উত্তরের উপর ভিত্তি করে, এটি এর পক্ষে উপযুক্ত উত্তর যা আসলে কাজ করতে পারে। কমপক্ষে এটি উত্তর দেওয়ার চেষ্টা। এটি হ'ল খুব পুরানো প্রশ্নের উত্তর যা ইতিমধ্যে একাধিক সঠিক উত্তর পোস্ট করেছে।
রূপ হাকুলিনেন


12

মঙ্গোডিবি ডাটাবেসের সমস্ত সংগ্রহ প্রদর্শন করার জন্য ব্যবহৃত কমান্ডটি

show collections

show collectionsকমান্ডটি চালানোর আগে আপনাকে ডাটাবেসটি নির্বাচন করতে হবে:

use mydb // mydb is the name of the database being selected

সমস্ত ডাটাবেস দেখতে, আপনি কমান্ডটি ব্যবহার করতে পারেন

show dbs // Shows all the database names present

আরও তথ্যের জন্য, শুরু করা দেখুন দেখুন ।


11

আপনি যদি মঙ্গোডিবি শেল (কমান্ড লাইন) থেকে সমস্ত সংগ্রহ দেখাতে চান তবে শেল সহায়ক ব্যবহার করুন,

show collections

যা বর্তমান ডাটাবেসের জন্য সমস্ত সংগ্রহ দেখায়। আপনি যদি নিজের অ্যাপ্লিকেশন থেকে সমস্ত সংগ্রহের তালিকা পেতে চান তবে আপনি মঙ্গোডিবি ডাটাবেস পদ্ধতিটি ব্যবহার করতে পারেন

db.getCollectionNames()

মঙ্গোডিবি শেল সহায়ক সম্পর্কে আরও তথ্যের জন্য, আপনি mongoশেল কুইক রেফারেন্স দেখতে পারেন ।


11

মঙ্গোশেলে নিম্নলিখিত কমান্ডগুলি সাধারণ।

show databases
show collections

এছাড়াও,

show dbs
use mydb
db.getCollectionNames()

কখনও কখনও এটি সমস্ত সংগ্রহের পাশাপাশি সামগ্রিক নেমস্পেসের অংশ যা সংগ্রহের সূচীগুলি দেখতে দরকারী:

আপনি এটি কীভাবে করবেন তা এখানে:

db.getCollectionNames().forEach(function(collection) {
    indexes = db[collection].getIndexes();
    print("Indexes for " + collection + ":");
    printjson(indexes);
});

তিনটি কমান্ড এবং এই স্নিপেটের মধ্যে, আপনার ভাল coveredেকে রাখা উচিত!


8

আমি মনে করি যে সবচেয়ে বড় বিভ্রান্তির একটি হ'ল আপনি mongo(বা একটি ইন্টারেক্টিভ / হাইব্রিড শেল) বনাম mongo --eval(বা একটি খাঁটি জাভাস্ক্রিপ্ট শেল) দিয়ে যা করতে পারেন তার মধ্যে পার্থক্য । আমি এই সহায়ক ডকুমেন্টগুলি হাতে রাখি:

এখানে স্ক্রিপ্ট করার একটি উদাহরণ যা আপনি অন্যথায় showকমান্ড দিয়ে করতে পারেন :

# List all databases and the collections in them

mongo --eval "
    db.getMongo().getDBNames().forEach(
        function(v, i){
            print(
                v + '\n\t' +
                db.getSiblingDB(v).getCollectionNames().join('\n\t')
            )
        }
    )
"

দ্রষ্টব্য: এটি ওয়ান-লাইনারের মতো কাজ করে। (তবে স্ট্যাক ওভারফ্লোতে এটি ভয়ানক দেখাচ্ছে looks)

mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"

ধন্যবাদ এটি অত্যন্ত কার্যকর।
মার্কো ক্র্যাভেরিও

4

>> ২.x এ, আপনি করতে পারেন

db.listCollections()

1.x এ আপনি করতে পারেন

db.getCollectionNames()

1
@ জননিএইচকে যেমন উল্লেখ করেছেন যে এটি কেবল নোড ড্রাইভারের ক্ষেত্রেই প্রযোজ্য এবং ওপি প্রশ্নে মঙ্গো শেল নয়
জেফ

@ জেফপুকিট III আমি নোড ব্যবহার করি না। এটি মঙ্গো শেলের ভিতরে আমার পক্ষে পুরোপুরি কাজ করে। ভাবছি কেন হবে না?
অনিরুদ্ধ জোশী

1
আমি মঙ্গোডিবি শেল সংস্করণটি চালাচ্ছি: ৩.২..6, এবং আমি যখন চালনা db.getCollectionNames()করি তখনই পাই [ "users" ]কারণ আমার ব্যবহারকারীর সংগ্রহ রয়েছে। যদি আমি চেষ্টা করি db.listCollections()তবে এর ফলাফল হয়[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
জেফ পেকেট

3

mongoশেল থেকে সমস্ত সংগ্রহের তালিকা :

  • db.getCollectionNames ()
  • সংগ্রহগুলি দেখান
  • টেবিল প্রদর্শন করুন

দ্রষ্টব্য: সংগ্রহ আপনি বর্তমান ডাটাবেস থেকে প্রদর্শিত হবে যেখানে আপনি বর্তমানে আছেন


এটি পূর্বের উত্তরের চেয়ে কীভাবে আলাদা?
পিটার মর্টেনসেন

3

ডাটাবেসে স্যুইচ করার জন্য।

দ্বারা:

{আপনার_ড্যাটাইবস_নাম} উদাহরণ ব্যবহার করুন :

use friends

কোথায় friendsআপনার ডাটাবেসের নাম ?

তারপর লিখ:

db.getCollectionNames()
show collections

এটি আপনাকে সংগ্রহের নাম দেবে।


এটি পূর্বের উত্তরের চেয়ে কীভাবে আলাদা?
পিটার মর্টেনসেন

2
> show dbs        
anuradhfirst  0.000GB
local         0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
  • ব্যবহার করে মঙ্গোডিবি ডাটাবেসের সাথে সংযুক্ত হন mongo । এটি সংযোগ শুরু করবে।
  • show dbsকমান্ড রান করুন । এটি আপনাকে সমস্ত উপস্থিত / উপলভ্য ডাটাবেস দেখিয়ে দেবে।
  • তারপরে databaseআপনি যা চান তা নির্বাচন করুন । উপরের দিকে এটি হয় anuradhfirst। তারপরে দৌড়াও use anuradhfirst। এটি আপনার পছন্দসই ডাটাবেসে স্যুইচ করবে।
  • show collectionsকমান্ড রান করুন । এটি collectionsআপনার নির্বাচিত ডাটাবেসের অভ্যন্তরের সমস্ত দেখায় ।

1

সংগ্রহগুলি দেখান

আপনি ডাটাবেসে স্যুইচ করার পরে এই কমান্ডটি সাধারণত মঙ্গোডিবি শেলটিতে কাজ করে।


1

মোংডোডিবি 3.0 ওয়্যারটেড টাইগার স্টোরেজ ইঞ্জিন ব্যবহার করে মোতায়েন করার জন্য, আপনি যদি db.getCollectionNames()3.0 এর আগে মঙ্গো শেলের কোনও সংস্করণ বা 3.0 সামঞ্জস্যপূর্ণ সংস্করণের পূর্বে ড্রাইভারের কোনও সংস্করণ থেকে চালনা করেন db.getCollectionNames()তবে বিদ্যমান সংগ্রহ থাকলেও কোনও তথ্য ফেরত পাবেন না।

আরও তথ্যের জন্য, দয়া করে এটি দেখুন




0

আমি listCollectionsএই উদ্দেশ্যে (মোঙ্গোডিবি 3.0 এবং আরও সমর্থন করে) ব্যবহার করি।

উদাহরণ:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });

সংগ্রহের সূচকের মতো আরও তথ্য আনতে:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });

কেবল সংগ্রহের নামগুলি মুদ্রণ করতে:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})

আমি মনে করি এটি আরও নমনীয়তা সরবরাহ করে।

আরও পড়ুন: তালিকা সংগ্রহ


0
 1. show collections; // Display all collections
 2. show tables     // Display all collections
 3. db.getCollectionNames();   // Return array of collection. Example :[ "orders", "system.profile" ]

প্রতিটি সংগ্রহের জন্য বিশদ তথ্য:

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
  • প্রয়োজনীয় অ্যাক্সেস (ডাটাবেসে তালিকা সংগ্রহের ক্রিয়াকলাপ মঞ্জুর করে এমন সুবিধা) ব্যবহারকারীর জন্য, পদ্ধতিটি ডাটাবেসের জন্য সমস্ত সংগ্রহের নাম তালিকাভুক্ত করে।
  • প্রয়োজনীয় অ্যাক্সেসবিহীন ব্যবহারকারীদের জন্য, পদ্ধতিটি কেবলমাত্র সেই সংগ্রহে তালিকাবদ্ধ করে যার জন্য ব্যবহারকারীদের বিশেষাধিকার রয়েছে। উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারী কোনও ডাটাবেসে একটি নির্দিষ্ট সংগ্রহের সন্ধান করে তবে পদ্ধতিটি কেবল সেই সংগ্রহটি ফিরিয়ে আনবে।

অনুসন্ধানের স্ট্রিংয়ের উপর ভিত্তি করে সংগ্রহের তালিকা তৈরি করতে।

db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })

উদাহরণ: নামে "আমদানি" থাকা সমস্ত সংগ্রহ সন্ধান করুন

db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })

ফিল্টার
পারভীন

@ প্রবীণ - আপনার মামলার উত্তর অন্তর্ভুক্ত করার জন্য আমি আমার উত্তর আপডেট করেছি। আশা করি সহায়তা করে
অমিতাশ

ধন্যবাদ অমিতেশ। আমি আমার স্ক্রিপ্ট লিখেছিলাম db.get Colલેક્NNames ()। ForEach (ফাংশন (কলঙ্কনাম) {যদি (collName.startsWith ("টেস্টক্লিকেশন_")) {মুদ্রণ ("+ কলঙ্কনামের জন্য ড্রপিং সূচক); db.get কালেকশন (সংঘর্ষের নাম) .ড্রপআইডেক্স (" ts_1 ");}});
পারভীন

-1

mongoশেল থেকে নিম্নলিখিত কমান্ডটি ব্যবহার করুন :

show collections

যদি আপনি আপনার আদেশটি ব্যাকটিক্সে রাখেন তবে আপনার -1 এ খারাপ ভোট দিন।
ব্লাবি

এটি পূর্বের উত্তরের চেয়ে কীভাবে আলাদা?
পিটার মর্টেনসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.